【发布时间】:2018-01-15 12:47:44
【问题描述】:
我有一个用于 UPS 跟踪的 php 解决方案。 我从 UPS 得到的使用“英语”语言的回复 有没有办法获得另一种语言的回复?
这是我在 ups 开发者文档中的代码: 这是我在 ups 开发者文档中的代码: 这是我在 ups 开发者文档中的代码: 这是我在 ups 开发者文档中的代码:这是我在 ups 开发者文档中的代码:
// Configuration
$accessLicenseNumber = "xxx";
$userId = "xxx";
$password = "xxx";
$endpointurl = 'https://onlinetools.ups.com/ups.app/xml/Track';
try {
// Create AccessRequest XMl
$accessRequestXML = new SimpleXMLElement ( "<AccessRequest></AccessRequest>" );
$accessRequestXML->addChild ( "AccessLicenseNumber", $accessLicenseNumber );
$accessRequestXML->addChild ( "UserId", $userId );
$accessRequestXML->addChild ( "Password", $password );
// Create TrackRequest XMl
$trackRequestXML = new SimpleXMLElement ( "<TrackRequest></TrackRequest >" );
$request = $trackRequestXML->addChild ( 'Request' );
$request->addChild ( "RequestAction", "Track" );
$request->addChild ( "RequestOption", "activity" );
$trackRequestXML->addChild ( "TrackingNumber", "xxx" );
$requestXML = $accessRequestXML->asXML () . $trackRequestXML->asXML ();
$form = array (
'http' => array (
'method' => 'POST',
'header' => 'Content-type: application/x-www-form-urlencoded',
'content' => $requestXML
)
);
// get request
$request = stream_context_create ( $form );
$browser = fopen ( $endpointurl, 'rb', false, $request );
if (! $browser) {
throw new Exception ( "Connection failed." );
}
// get response
$response = stream_get_contents ( $browser );
fclose ( $browser );
if ($response == false) {
throw new Exception ( "Bad data." );
} else {
// get response status
$resp = new SimpleXMLElement ( $response );
}
Header ( 'Content-type: text/xml' );
} catch ( Exception $ex ) {}
}
【问题讨论】:
-
语言似乎是在
<AccessRequest xml:lang="en-US">标签中定义的。 -
是的,我在
$accessRequestXML = new SimpleXMLElement ( "<AccessRequest xml:lang='de_DE'></AccessRequest>");和$accessRequestXML = new SimpleXMLElement ( "<AccessRequest xml:lang='de-DE'></AccessRequest>");之前试过这个 - 但它仍然是英文 -
您在发送请求之前是否检查了请求的输出 (
$requestXML)?格式可以吗? -
格式应该没问题,否则我不会得到正确的响应,不是吗?
-
是的。我主要考虑
xml:lang="de-DE"的格式。