切换UPS新REST API(OAuth2.0)后如何获取XML格式响应?
UPS新REST API切换疑问解答
核心问题
- 切换至UPS新OAuth2.0认证的REST API后,旧API返回XML格式追踪响应,新API返回JSON,不确定是否可以用新Bearer Token结合旧API调用方式
- 根据UPS官网说明,确认新API是否不再支持XML响应
新旧API对比
旧API(XML响应)
响应示例:
<?xml version="1.0"?> <TrackResponse> <Response> <TransactionReference> <CustomerContext>...</CustomerContext> </TransactionReference> <ResponseStatusCode>1</ResponseStatusCode> </Response> </TrackResponse>
调用方式(POST):
请求URL:https://wwwcie.ups.com/ups.app/xml/Track
请求体:
<?xml version="1.0" ?> <AccessRequest xml:lang='en-US'> <AccessLicenseNumber>....</AccessLicenseNumber> <UserId>....</UserId> <Password>....</Password> </AccessRequest> <?xml version="1.0" ?> <TrackRequest> <Request> <TransactionReference> <CustomerContext>....</CustomerContext> </TransactionReference> <RequestAction>Track</RequestAction> </Request> <TrackingNumber>1Z....</TrackingNumber> </TrackRequest>
新API(JSON响应)
响应示例:
{"trackResponse":{"shipment":[{"inquiryNumber":"1Z...","package":[{"trackingNumber":...}]}}}
调用方式(GET):
With CreateObject("MSXML2.ServerXMLHTTP") .Open "GET", "https://wwwcie.ups.com/api/track/v1/details/1Z.....?locale=en_US&returnSignature=false&returnMilestones=true" .setRequestHeader "Authorization", "Bearer " + strClientToken .setRequestHeader "transId", "string" .setRequestHeader "transactionSrc", "testing" .send Debug.Print .responseText strFile_Path = "C:\test.txt" Open strFile_Path For Output As #1 Print #1, .responseText Close #1 End With
关键结论
- 新Bearer Token无法结合旧API方式使用:旧API端点
https://wwwcie.ups.com/ups.app/xml/Track不支持新的OAuth2.0认证机制,必须使用新API提供的REST端点和请求结构。 - 新API不再支持XML响应:根据UPS官方说明:
流程的第二步是查看我们提供的所有新API定义。所有使用XML、SOAP或旧版JSON负载的UPS API集成都需要转换为API目录中的RESTful API。这需要重新构建API请求负载。所有API的示例请求可在API文档中找到,各API的示例集成可在UPS GitHub获取。新API端点仅支持RESTful请求,许多API的请求结构略有不同。新API端点和负载需要集成到您的软件中,同时采用新的OAuth安全(Bearer Token)模型。
明确说明新API仅支持RESTful请求,原有XML/SOAP集成需完全迁移到新的REST API架构,响应格式统一为JSON。
内容的提问来源于stack exchange,提问作者Ron2020
相关产品推荐
相关产品推荐

