繁体   English   中英

FedEx XML API - 如何在没有 SOAP 的情况下拨打电话?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM