[英]FedEx XML API - How to call without SOAP?
我正在开发 FedEx API 客户端来处理货件,使用 C#、.NET Core 3.1。 如果我使用 SOAP 消息,一切正常,但我想改用普通的 XML 帖子。 我已经成功地将此方法与 DHL API 一起使用。 我不想使用所有 WCF 开销和代码生成,并且发现 SOAP 异常很难处理。 文档说普通的 XML 应该可以工作,但是如果没有 SOAP 信封,我无法获得一个简单的跟踪请求,并且文档中没有示例。 在 SOAP 信封中包装一个普通的 XML 请求似乎很容易,但实际上对于许多不同的命名空间等以编程方式执行非常复杂。我更愿意让普通的 Z3501BB093D363810B671059B9CFED 工作。 Some old posts say the xml URL is different (with /xml
at the end), but the current docs do not mention any other URL than this one: https://wsbeta.fedex.com:443/web-services and I'我也尝试将/xml
添加到末尾。
这是一个有效的 SOAP 请求:
<?xml version="1.0" encoding="utf-8"?>
<Envelope xmlns="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<Body>
<TrackRequest xmlns="http://fedex.com/ws/track/v19">
<WebAuthenticationDetail>
<UserCredential>
<Key>MYKEY</Key>
<Password>MYPWD</Password>
</UserCredential>
</WebAuthenticationDetail>
<ClientDetail>
<AccountNumber>510087380</AccountNumber>
<MeterNumber>119194031</MeterNumber>
</ClientDetail>
<TransactionDetail>
<CustomerTransactionId>***Track Request using VC#***</CustomerTransactionId>
</TransactionDetail>
<Version>
<ServiceId>trck</ServiceId>
<Major>19</Major>
<Intermediate>0</Intermediate>
<Minor>0</Minor>
</Version>
<SelectionDetails>
<PackageIdentifier>
<Type>TRACKING_NUMBER_OR_DOORTAG</Type>
<Value>794959156726</Value>
</PackageIdentifier>
</SelectionDetails>
<ProcessingOptions>INCLUDE_DETAILED_SCANS</ProcessingOptions>
</TrackRequest>
</Body>
</Envelope>
这是不工作的普通 XML:
<?xml version="1.0" encoding="utf-8"?>
<TrackRequest xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://fedex.com/ws/track/v19">
<WebAuthenticationDetail>
<UserCredential>
<Key>MYKEY</Key>
<Password>MYPWD</Password>
</UserCredential>
</WebAuthenticationDetail>
<ClientDetail>
<AccountNumber>510087380</AccountNumber>
<MeterNumber>119194031</MeterNumber>
</ClientDetail>
<TransactionDetail>
<CustomerTransactionId>***Track Request using VC#***</CustomerTransactionId>
</TransactionDetail>
<Version>
<ServiceId>trck</ServiceId>
<Major>19</Major>
<Intermediate>0</Intermediate>
<Minor>0</Minor>
</Version>
<SelectionDetails>
<PackageIdentifier>
<Type>TRACKING_NUMBER_OR_DOORTAG</Type>
<Value>794959156726</Value>
</PackageIdentifier>
</SelectionDetails>
<ProcessingOptions>INCLUDE_DETAILED_SCANS</ProcessingOptions>
</TrackRequest>
对于普通的 XML,我收到 SOAP 编码的响应,指出“错误代码 500 内部系统错误。请稍后再试。”
有谁知道让普通 XML 请求工作所需的秘密格式?
那个简单的 xml 是正确的:我只更改了密钥、密码、帐户和仪表编号,并且得到了有效的响应。
只是为了确认,请求是对https://wsbeta.fedex.com:443/xml
(测试环境的 URL)的 POST,标题是Accept: image/gif, image/jpeg, image/pjpeg, text/plain, text/html, */*"
和Content-Type: text/xml
,正文是您包含的普通 xml (即没有 SOAP 元素)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.