簡體   English   中英

連接到PHP中的WCF服務,該服務具有NetTCP綁定和BasicHttpBinding

[英]Connecting to a WCF Service in PHP that has a a NetTCP Binding and a BasicHttpBinding

我有一個WCF服務。 它有多個客戶端和三個端點。 端點綁定是nettcp,wsHttp和basicHttp。 如果我嘗試通過php'd builtin SoapClient類連接到它,如下所示:

$service = new SoapClient
("http://service.companyname.local:6666/Service/?wsdl",
 array(
         "location" => "http://service.companyname.local:6666/Service/Basic",

    "trace" => true,
    'soap_version' => SOAP_1_1
     )
);

我得到以下內容:

PHP Fatal error:  SOAP-ERROR: Parsing WSDL: PHP-SOAP doesn't support transport 'http://schemas.microsoft.com/soap/tcp' in c:\www\client.php on line 666

現在我的解決方法是手動保存wsdl並刪除nettcp綁定。 有沒有一種解決方法可以讓我使用自動生成的wsdl? 我可以在web.config中隱藏wsdl的綁定嗎? 我可以在不同的綁定上生成不同的wsdl。 我不想部署兩個服務主機。

當您說您不想部署兩個服務主機時,我假設您在Windows服務中自我托管一個ServiceHost。 我通過構建一個通用服務主機來解決這個問題,該主機可以在內部托管盡可能多的服務impl(例如,它是配置中每個服務條目的新ServiceHost)。 這樣,我可以根據需要在單個Windows服務中靈活地托管盡可能多的服務impl。 這將通過允許您將basicHttp綁定服務與其他服務分開以保持WSDL清潔來解決您的問題。 有一些開源的例子( 這里是一個)。

我能想到的另一種方法是公開你自己的自定義元數據端點,這是從WsdlExporter構建的(見這里

祝好運!

我用PHP提交了一個功能請求 如果他們實現了這一點,我會將此標記為正確答案。 我仍然願意接受更好的解決方法。

更新:我提交了一個補丁來實現這個。 我正在等待它的批准。
更新:補丁致力於svn。 等待PHP的下一個版本。
更新:補丁現在是PHP 5.3.3和5.2.14的一部分。

我目前正在研究的另一個選項是PHP的第三方soap客戶端,名為WSF-PHP

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM