2017-01-20 2 views
1

Я использую cURL для отправки POST-информации в калькулятор скорости доставки usps.USPS API Возвратная ошибка - Ошибка в XML

$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 (я заменил его хз из-за своей чувствительной природы).

В том же письме было указано, что расчет скорости разрешен. Вот ошибка, возвращается:

80040B19XML Syntax Error:
Please check the XML request to see if it can be parsed.USPSCOM::DoAuth

Я пошел вперед и взял XML, который вторит и включил его в xmlvalidation.com и не обнаружили никаких ошибок. Я также пробовал это без линии <?xml version="1.0" encoding="UTF-8"> наверху.

+1

У вас есть curl_init? – user2182349

+1

Вы уверены, что эти значения (например, этот: '$ pounds') обновляются с реальными значениями (числами), а не просто остаются в строке« $ фунтов »? – jonmrich

+0

@ user2182349 Да, это выше. –

ответ

1

PHP превращает идентификатор пакета в научную нотацию, потому что это просто большой «номер», поэтому вам нужно прекратить это, сделав его строкой.

Вместо этого: <Package ID='$aucid'>

Попробуйте это: <Package ID=\"".$aucid."\">

Вам также может понадобиться, чтобы обернуть весь этот XML в rawurlencode

+0

«$ aucid» - это двухзначная переменная. Я пошел вперед и поместил это в rawurlencode, и я получаю ту же ошибку. –

Смежные вопросы