我正在尝试与DHL soap web服务进行通信。通过SoapUI,我获得了所有正确的数据,但当我使用PHP soap客户端时,我收到了一个soapFault。
如果我查看lastRequest。。我的整个XML都是小写的,我已经将此请求放入SoapUI中,并且我还收到了一个错误。这是因为XML区分大小写。
$data = array(
'DropOffType' => 'REGULAR_PICKUP',
'NextBusinessDay' => 'Y',
'Ship' => array(
'Shipper' => array(
'City' => 'Brussel',
'PostalCode' => '1000',
'CountryCode' => 'BE',
),
'Recipient' => array(
'City' => 'Paris',
'PostalCode' => '75008',
'CountryCode' => 'FR',
),
),
'Packages' => array(
1,
'RequestedPackages' => array(
'Weight' => array(
'Value' => 10
),
'Dimensions' => array(
'Length' => 10,
'Width' => 10,
'Height' => 10,
)
)
),
'ShipTimestamp' => '2013-11-30T17:00:00GMT+01:00',
'UnitOfMeasurement' => 'SI',
'DeclaredValueCurrencyCode' => 'USD',
'Account' => '270835287',
);
$wsseToken = $this->wsseSoapHeader();
$client->__setSoapHeaders($wsseToken);
// Fetch response
$response = $client->getRateRequest(array(
'ClientDetail'=> $clientdet,
'RequestedShipment'=> $data,
)
);
wsse令牌是正确的,因为我可以在SoapUI中使用它。我怎样才能在它的原始外壳中发送我的请求?
提前Thnx!
我假设您使用的是PHP提供的SoapClient。
正如您从这个线程中看到的,soapclient实际上尊重大小写(如果不尊重,那么它对任何人都不起作用)。然而,基于这个类似的线程,我认为getLastRequest()在报告它时实际上降低了所有XML的优先级。然而,您的问题可能是其他问题。
如果您对SoapClient感到失望,您可以测试例如NUSoap。对我来说,这是非常简单和可靠的。