我正在尝试与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提前!
答案 0 :(得分:1)
我假设你正在使用SoapClient supplied by PHP。
从this thread可以看出,soapclient实际上确实尊重了外壳(如果没有,那么对任何人都不起作用)。但是,基于this similar thread,我认为getLastRequest()在报告时实际上会降低所有XML的范围。但是,您的问题可能还有其他问题。
如果您对SoapClient感到沮丧,可以测试一下例如NUSoap。对我而言,它非常简单可靠。