我有一个WCF Web服务,允许基本HTTP和WS-HTTP客户端,都通过HTTPS使用用户名和&密码验证.这是通过在同一服务上使用两个绑定来实现的.
因此,服务位于https://foo.com/Service.svc,基本HTTP(SOAP 1.1)端点为https://foo.com/Service.svc/Unp11,WS-HTTP(SOAP 1.2)端点为https://foo.com/Service.svc/Unp.
客户端正在尝试使用其内置的SOAP支持通过PHP 5访问此Web服务,并且无法连接到该服务.他不断收到HTTP 400(错误请求)响应,如果SOAP消息格式错误,或者SOAP 1.1消息被发送到SOAP 1.2端点(反之亦然),则会发生这种情况.
我只懂基本的PHP,所以我很难帮助他.我知道你可以通过这样做来创建一个客户端
$client = new SoapClient('https://foo.com/Service.svc?wsdl');
但是如何指定绑定/端点?使用PHP实现这一切是否存在任何已知问题?
UPDATE
好的,我可以使用PHP连接到WCF服务ok(在SoapClient构造函数中指定SOAP版本),并调用$client-> __ getFunctions()返回所有Web服务操作的正确列表.
当我尝试使用$client-> __ soapCall调用一个时,页面只是在那里加载了很长一段时间,并最终返回错误“Error Fetching http headers”.究竟是什么意思,我该如何解决? (从.Net客户端使用该服务非常有效.)
刚刚遇到这个问题,为PHP调用者创建了一个带有多个绑定的WCF.设置位置似乎允许PHP的SoapClient的WSDL版本并指定要使用的绑定.
WCF配置是(1个服务,带有2个绑定wsHttp和basicHttp),非常简单.
$client = new SoapClient("http://example.com/service.svc?wsdl"); $client->__setLocation("http://example.com/service.svc/basic"); $response = $client->MethodName(array( "paramName" => "paramValue" ... ));