5

我需要在 PHP 中调用 SOAP 1.1 Web 服务。但是,要工作的要求之一是我必须发送 Content-Type=application/soap+xml。现在,我知道这些是不同的:

  • SOAP 1.2 -> 内容类型:应用程序/soap+xml
  • SOAP 1.1 -> 内容类型:文本/xml

我需要使用带有 WSDL 的 SoapClient 来执行此操作。但是,在将版本设置为 SoapClient 为 1.1 后,我找不到如何设置 Content-Type

有人可以提供示例或代码片段吗?

谢谢!

4

2 回答 2

2

当您尝试在 a 中设置它们时,有许多标题会被忽略stream_context,并且永远不会被使用。

检查底层 C 源文件soap/php_http.c 并搜索“跳过一些预定义的标头”以获取列表。

这就是有些人报告在某些情况下尝试使用 、 和其他标题时出现问题set Host的原因AuthorizationContent-Type

于 2019-02-11T22:23:25.927 回答
1

您可以在 SoapClient 选项中提供流上下文。

$ctx_opts = array(
    'http' => array(
        'header' => 'Content-Type: application/soap+xml'
    )
);

$ctx = stream_context_create($ctx_opts);
$soapClient = new SoapClient('your.wsdl', array('stream_context' => $ctx));
于 2013-10-18T10:18:16.333 回答