【发布时间】:2021-01-20 22:03:03
【问题描述】:
对使用 Soap 完全陌生,但我需要了解发生了什么,因为我无法理解这个问题。
我需要添加两个命名空间才能使我的代码正常工作。而且我这辈子都做不到。
这是我需要添加的名称空间:
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:tem="http://tempuri.org/" xmlns:cour="http://schemas.datacontract.org/2004/07/CourierServiceLibrary">
这是我要发送的内容:
$xml = array(
'CLIENT_GUID' => 'GUID',
'Destination' => array(
'Country2LetterCode' => 'PM',
'TownCity' => 'tiwb',
'PostCode' => 'AA112BB',
'NonDocFlag' => false,
'ImportFlag' => false
),
'PackageDimensionsMetric' => array(
'NumberOfPackages'=> 1,
'Weight' => 9,
'Length' => 9,
'Width' => 9,
'Height' => 9
)
);
我发送的 PHP 代码非常简单,看起来有点像这样:
$soapclient = new SoapClient('http://webservice.com/Service.svc?WSDL');
$response = $soapclient->Comparison($xml);
我收到了回复,但因为我似乎无法添加名称空间,所以返回的内容无法阅读。
我尝试发送完整 XML 的原始文本版本,但由于服务器每次都拒绝它而失败。有很多旧论坛谈到这一点,但我没有尝试过任何解决方案。
但我确实读过一篇说 SoupClient 不可能的,可以追溯到 2013 年。实际上仍然是这种情况,这就是我无法添加命名空间的原因吗?
注意:使用 SoupUI,它似乎实际上发送了已经包含 xmlns 的整个原始 xml。但是当我尝试时它失败了。
非常感谢任何帮助,因为我不明白为什么它在 SoupUI 中不起作用。但我之前的任何项目中都没有使用过 Soup。
【问题讨论】:
标签: php xml-namespaces soap-client