如何使用非默认Content-Type进行PHP Soap 1.1调用

aze*_*pdx 5 php soap wsdl content-type http-headers

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

  • SOAP 1.2->内容类型:application / soap + xml
  • SOAP 1.1->内容类型:text / xml

我需要将WSDL与SoapClient结合使用。但是,在将SoapClient的版本设置为1.1后,我找不到如何设置Content-Type的方法。

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

谢谢!

Dan*_*dow 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));
Run Code Online (Sandbox Code Playgroud)

  • 在 PHP5.5 中,标头似乎被忽略了。我假设 SoapClient 在自己的上下文中设置它自己。 (8认同)