【发布时间】:2023-03-06 16:53:01
【问题描述】:
当我使用 PHP 的 SOAP 库时,我从基于 Java 的 SOAP 服务器收到错误消息,因为信封的名称以 SOAP-ENV 为前缀。网络服务需要:
我要发送的内容:
<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
<SOAP-ENV:Header>...</SOAP-ENV:Header>
<SOAP-ENV:Body>...</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
网络服务需要什么:
<?xml version="1.0" encoding="UTF-8"?>
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
<s:Header>...</s:Header>
<s:Body>...</s:Body>
</s:Envelope>
我已经浏览过php.net'S SOAP library 文档。这部分似乎没有任何内容。
是的,对于这个 Web 服务来说,它的前缀是 SOAP-ENV: 还是 s: 都很重要
以下是生成当前 XML 样式的内容:
$client = new SoapClient($url, array(
'soap_version' => SOAP_1_1,
'trace' => 1,
'use' => SOAP_LITERAL)
);
$result = $client->$method($dataObject);
任何帮助将不胜感激。
【问题讨论】:
-
stackoverflow.com/questions/41610597/… 暗示这是不可能的(尽管他们确实特别询问了 soup 客户)
-
stackoverflow.com/questions/8650580/change-soap-prefixes-in-php/… 提供了一种扩展 SoapClient 类以实现此目的的方法。阅读一下,看看是否有帮助。
-
@NigelRen - 是的,汤客户。比肥皂更开胃。我将尝试像第二个建议那样扩展 SoapClient 类,看看是否能解决问题。我会发布结果。
标签: java php web-services soap