我有不同的货物,其中一些包含多个包裹。我创建了这个请求:
$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);
它返回了许多有价值的信息,但如果有多个包,它不会返回包的数量。如何获取此信息,称为“多个包”?谢谢。
答案 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类。