2012-11-23 164 views
0

我目前正在尝试学习如何制作WCF soap服务。我然后试图通过PHP访问这个,但我目前正在出错。通过Php访问WCF Soap服务

下面是访问WCF soap服务的代码。

try 
{ 
    $client = new SoapClient("http://localhost:8732/Design_Time_Addresses/SoapServer/Service1/?wsdl", 
      array('soap_version'=>'SOAP_1_2', "trace" => 1, "exception" =>0)); 
    $result = $client->__soapCall("getData", array()); 

    echo "<pre>"; 
    print_r($result); 
    echo "</pre>"; 
} 
catch (Exception $e) 
{ 
    echo $e->getMessage(); 
} 

目前我目前得到以下错误:

Cannot process the message because the content type 'text/xml; charset=utf-8' was not the expected type 'application/soap+xml; charset=utf-8'. 

我GOOGLE了这一点,但什么也没对我有意义至今。我确实在某个地方看过'soap_version'=>'SOAP_1_2',但没有任何区别。使用WcfTestClient软件时

SOAP服务工作正常,所以一定是出了故障,我如何做PHP。

UPDATE 下面是SOAP请求标头

Accept:text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 
Accept-Charset:ISO-8859-1,utf-8;q=0.7,*;q=0.3 
Accept-Encoding:gzip,deflate,sdch 
Accept-Language:en-GB,en;q=0.8 
Cache-Control:max-age=0 
Connection:keep-alive 
Cookie:PHPSESSID=o9iaupn13vq7p812t4bhos97p6; user=cboard 
Host:localhost 
User-Agent:Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.64 Safari/537.11 

下面是响应头

Content-Length:142 
Content-Type:text/plain 
Date:Fri, 23 Nov 2012 21:35:55 GMT 
Server:Microsoft-IIS/7.5 
X-Powered-By:PHP/5.3.13 
X-Powered-By:ASP.NET 
+0

你能检查这一个http://stackoverflow.com/a/5409465/630316 – Rafee

+0

谢谢,我确实看到这一点,但没有太多的意义,它可以如何修复,特别是因为它不被接受回答 – Boardy

+0

加上'头( '内容类型:text/plain的');上面的''$'client' SOAP object' – Rafee

回答

0

这里的问题是,反回的响应是错误页(文本/纯),而不是Web服务响应(应用程序/ XML)

尝试并解决它先找出犯错什么或者是。使用Wire Shark(或类似的东西)来查看正在发回的内容。

如果错误信息是不够的,发现问题。再次使用Wire Shark并从您的php客户端和WCF Test客户端捕获请求,然后比较两者。

+0

问题是我无法使用wireshark作为其在本地计算机上开发的局域网跟踪,并且Wireshark无法在Windows上捕获本地主机通信 – Boardy

+0

尝试使用RawCap,它应该能够嗅探本地主机通信 –

0

感谢大家对你的帮助和建议,由某种奇迹,我设法找出问题是什么。

我需要将绑定从wsHttpBinding更改为basicHttpBinding,现在可以通过PHP访问它。