PHP soap请求全部为小写


PHP soap request is all lowercase

我正在尝试与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。对我来说,这是非常简单和可靠的。