通过Php访问WCF Soap服务

时间:2012-11-23 21:06:23

标签: php wcf

我目前正在尝试学习如何制作WCF肥皂服务。然后我试图通过PHP访问它,但我目前收到一个错误。

以下是访问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'.

我用谷歌搜索了这个,但到目前为止我没有任何意义。我确实在某处读过'soap_version'=>'SOAP_1_2',但没有任何区别。

使用WcfTestClient软件时,soap服务工作正常,所以我的PHP操作方式一定不对。

更新 下面是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

2 个答案:

答案 0 :(得分:0)

这里的问题是返回的响应是错误页面(text / plain)而不是Web服务响应(application / xml)

首先尝试修复它,找出错误是什么。使用Wire Shark(或类似的东西)查看发回的内容。

如果错误中的信息不足以找到问题。再次使用Wire Shark并从您的php客户端和WCF测试客户端捕获请求,然后比较两者。

答案 1 :(得分:0)

感谢大家的帮助和建议,通过一些奇迹,我设法找出问题所在。

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