如果有多个包裹,UPS跟踪请求不会返回货件中的包裹数量

时间:2014-02-12 16:44:21

标签: php ups

我有不同的货物,其中一些包含多个包裹。我创建了这个请求:

$data ="<?xml version=\"1.0\"?>
<AccessRequest xml:lang='en-US'>
        <AccessLicenseNumber>myLicenceNumber</AccessLicenseNumber>
        <UserId>myUserId</UserId>
        <Password>myPass</Password>
</AccessRequest>
<?xml version=\"1.0\"?>
<TrackRequest>
        <Request>
                <TransactionReference>
                        <CustomerContext>
                                <InternalKey>hello</InternalKey>
                        </CustomerContext>
                        <XpciVersion>1.0</XpciVersion>
                </TransactionReference>
                <RequestAction>Track</RequestAction>
        </Request>
<TrackingNumber>myTrackingNumber</TrackingNumber>
</TrackRequest>";
$ch = curl_init("https://www.ups.com/ups.app/xml/Track");
curl_setopt($ch, CURLOPT_HEADER, 1);
curl_setopt($ch,CURLOPT_POST,1);
curl_setopt($ch,CURLOPT_TIMEOUT, 60);
curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
curl_setopt ($ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt ($ch, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($ch,CURLOPT_POSTFIELDS,$data);
$result=curl_exec ($ch);
$data = strstr($result, '<?');
$xml=simplexml_load_string($data);
print_r($xml);

它返回了许多有价值的信息,但如果有多个包,它不会返回包的数量。如何获取此信息,称为“多个包”?谢谢。

2 个答案:

答案 0 :(得分:1)

您可以尝试使用EasyPost之类的内容设置网络挂钩吗?您可以在此处查看USPS需要的包变量 - https://www.easypost.com/docs/api#parcels

否则,为了获得更多帮助,您能告诉我这个电话的回复吗?

答案 1 :(得分:0)

我需要一个快速解决方案,所以我决定将其添加到我的方法中:

$tracking_url = 'http://wwwapps.ups.com/WebTracking/track?track=yes&trackNums='.$trackingNumber;

$html = file_get_html($tracking_url);

foreach($html->find('.module1 dd') as $e) {
    if(is_numeric($e->innertext)) {
        $number_of_packages = $e->innertext;
    }
}

此示例使用simple_php_dom.php类。