【问题标题】:Calling a WCF WebService in PHP via wsHttpBinding通过 wsHttpBinding 在 PHP 中调用 WCF WebService
【发布时间】:2026-02-03 02:00:02
【问题描述】:

我有一个 WCF 网络服务,我可以通过 basicHttp 连接到它,但不能通过 wsHttp。我尝试通过以下方式通过 wshttp 连接到它:

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

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

对 SoapClient 构造函数的调用返回正常。当我尝试使用 $client->FunctionName 调用一个时,页面只是在那里加载了很长一段时间,并最终返回错误“错误获取 http 标头”。这到底是什么意思,我该如何解决? (使用 .Net 客户端的服务效果很好。)

【问题讨论】:

    标签: .net php wcf wshttpbinding


    【解决方案1】:

    wsHttpBinding 上的default config 使用普通 PHP SoapClient 无法理解的高级 WS-Security 和 WS-Addressing 功能。还有其他 PHP 可访问的 SOAP 客户端可能能够工作(例如 Apache Axis2+Rampart/C),或者您可以尝试关闭一些不兼容的 wsHttpBinding 功能(消息安全性可能是第一个)。并不是说它不起作用,但您可能需要进行一些反复试验才能使其正常工作。

    【讨论】:

      【解决方案2】:

      上次查,php不支持wsHttpBinding

      【讨论】:

      • Svetlozar,你在哪里检查的?您是否编写了一些代码,在谷歌上查看并达到我所做的那样?你检查了 PHP 文档吗?一些邮件列表?如果做不到,我想知道为什么做不到。
      • 同意,最好为这个笼统的声明提供一些实质内容。 PHP 和 WCF 是我正在努力解决的一个领域,网络上有很多解决方法似乎是人们“摆弄”直到他们开始工作的结果,但到目前为止还没有人能够逐步识别- 准确了解交互中的问题。