如何解决FedEx XML API - 如何在没有 SOAP 的情况下调用?
我正在开发一个 FedEx API 客户端来处理货件,使用 C#、.NET Core 3.1。如果我使用 SOAP 消息,一切正常,但我想改用纯 XML 帖子。我已经在 DHL API 中成功地使用了这种方法。我不想使用所有 WCF 开销和代码生成,并且发现 SOAP 异常难以处理。文档说纯 XML 应该可以工作,但是我无法在没有 SOAP 信封的情况下获得简单的跟踪请求,并且文档中没有示例。将纯 XML 请求包装在 SOAP 信封中似乎很容易,但实际上对于许多不同的命名空间等以编程方式执行非常复杂。我更愿意让纯 XML 工作。一些旧帖子说 xml URL 不同(末尾带有 /xml
),但当前文档没有提到除此之外的任何其他 URL:https://wsbeta.fedex.com:443/web-services 并且我尝试添加 {{1 }} 到最后。
这是一个有效的 SOAP 请求:
/xml
这里是非工作的纯 XML:
<?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,我收到 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 元素)。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。