PHP soap请求全部小写

时间:2013-11-27 06:51:00

标签: php web-services soap

我正在尝试与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提前!

1 个答案:

答案 0 :(得分:1)

我假设你正在使用SoapClient supplied by PHP

this thread可以看出,soapclient实际上确实尊重了外壳(如果没有,那么对任何人都不起作用)。但是,基于this similar thread,我认为getLastRequest()在报告时实际上会降低所有XML的范围。但是,您的问题可能还有其他问题。

如果您对SoapClient感到沮丧,可以测试一下例如NUSoap。对我而言,它非常简单可靠。