我正在使用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">
行。
答案 0 :(得分:1)
PHP正在将包ID转换为科学计数法,因为它只是一个很大的数字&#34;,所以你需要通过使它成为一个字符串来阻止它发生。
而不是:<Package ID='$aucid'>
试试这个:<Package ID=\"".$aucid."\">
您可能还需要将整个XML包装在rawurlencode