TNT通过参考PHP搜索

时间:2018-10-30 15:53:28

标签: php xml

我在TNT上有一个帐户,我正在尝试使用TNT expressconnect的参考号949441搜索寄售编号。

我的下面的代码

<?php
function tntTrack($TRACKINGNUMBER)
{
$data ="<?xml version=\"1.0\" encoding=\"UTF-8\"?><TrackRequest locale=\"en_US\" version=\"3.1\">
    <SearchCriteria marketType=\"INTERNATIONAL\" originCountry=\"GB\">
        <CustomerReference>$TRACKINGNUMBER</CustomerReference>
    </SearchCriteria>
    <LevelOfDetail>
        <Summary/>
    </LevelOfDetail>
</TrackRequest>";



$ch = curl_init("https://express.tnt.com/expressconnect/track.do");
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);
// echo '<!-- '. $result. ' -->';
$data = strstr($result, '<?');
$xml_parser = xml_parser_create();
xml_parse_into_struct($xml_parser, $data, $vals, $index);
xml_parser_free($xml_parser);
$params = array();
$level = array();
foreach ($vals as $xml_elem) {
 if ($xml_elem['type'] == 'open') {
if (array_key_exists('attributes',$xml_elem)) {
         list($level[$xml_elem['level']],$extra) = array_values($xml_elem['attributes']);
} else {
         $level[$xml_elem['level']] = $xml_elem['tag'];
}
 }
 if ($xml_elem['type'] == 'complete') {
$start_level = 1;
$php_stmt = '$params';
while($start_level < $xml_elem['level']) {
         $php_stmt .= '[$level['.$start_level.']]';
         $start_level++;
}
$php_stmt .= '[$xml_elem[\'tag\']] = $xml_elem[\'value\'];';
eval($php_stmt);
 }
}
curl_close($ch);
return $params;
}

if ($_POST['af0'] == 'xx1') {
    if (preg_match('/^[a-z\d_]{4,80}$/i', $_POST['TRACKINGNUMBER'])) {
        $cleanTRACKINGNUMBER = $_POST['TRACKINGNUMBER'];
        $someArray = tntTrack("$cleanTRACKINGNUMBER");
        echo '<pre>'; print_r($someArray ); echo '</pre>';
    } else {
        echo 'Invalid reference number... sigh...';
    }
}



?>

<html>
<head><title>TNT test</title></head>
<body>
<h1>TNT Tracking PHP Function</h1>
<h3>Please enter a valid order number.  The XML response will be displayed as an array above</h3>
<form method="POST" action="" />
<input type="text" name="TRACKINGNUMBER" />
<input type="hidden" name="af0" value="xx1" />
<input type="submit" />
</form>
</body>
</html>

当我在https://express.tnt.com/expresswebservices-website/app/trackingrequest.html上测试XML文件时

它返回结果并返回给我,如果我通过页面进行操作,则响应为:

数组 ( )

您能指出我错误的代码还是我该如何做?

谢谢。

0 个答案:

没有答案