USPS API返回错误 - XML中没有错误

时间:2017-01-20 02:37:24

标签: php xml curl usps

我正在使用cURL将POST信息提交给usps运费计算器。

$info = "<?xml version='1.0' encoding='UTF-8'?>
<RateV4Request USERID='xxxx'>
    <Package ID='$aucid'>
        <Service>Priority</Service>
        <ZipOrigination>xxxx</ZipOrigination>
        <ZipDestination>$zip</ZipDestination>
        <Size>$size</Size>
        <Pounds>$pounds</Pounds>
        <Ounces>$ounces</Ounces>
        <Container>RECTANGULAR</Container>
        <Width>$width</Width>
        <Length>$length</Length>
        <Height>$height</Height>
        <SpecialServices><SpecialService>108</SpecialService></SpecialServices>
    </Package>
</RateV4Request>";

$array = array("API" => "RateV4", "XML" => $info);

$link = "http://production.shippingapis.com/ShippingAPI.dll";

curl_setopt($ch, CURLOPT_URL,$link);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS,$array);
$answer=curl_exec($ch);
echo $answer;
curl_close($ch);

当我注册USPS网络工具时,发送了一封带有USERID的电子邮件(由于其敏感性,我已将其替换为xs。)

在同一封电子邮件中,指定允许进行费率计算。 这是返回的错误:

  

80040B19XML语法错误:
  请检查XML请求以查看是否可以解析它.USPSCOM :: DoAuth

我继续使用回显的XML并将其插入xmlvalidation.com,但没有发现任何错误。我也尝试过,顶部没有<?xml version="1.0" encoding="UTF-8">行。

1 个答案:

答案 0 :(得分:1)

PHP正在将包ID转换为科学计数法,因为它只是一个很大的数字&#34;,所以你需要通过使它成为一个字符串来阻止它发生。

而不是:<Package ID='$aucid'>

试试这个:<Package ID=\"".$aucid."\">

您可能还需要将整个XML包装在rawurlencode