【问题标题】:Cannot send non-SOAP rate request to FedEx无法向 FedEx 发送非 SOAP 费率请求
【发布时间】:2020-12-17 15:23:09
【问题描述】:

尝试向 FedEx 发送非 SOAP 费率请求。当我发送他们的 SOAP 端点时,以下 XML 与 SOAP Env 和 Body 一起使用。它在文档中说他们提供了一个纯 XML 的解决方案,并且其格式与 SOAP 请求完全相同。发送至https://wsbeta.fedex.com:443/xml。如果有人有任何见解,请告诉我。

<RateRequest>
  <WebAuthenticationDetail>
    <UserCredential>
      <Key>omitted</Key>
      <Password>omitted</Password>
    </UserCredential>
  </WebAuthenticationDetail>
  <ClientDetail>
    <AccountNumber>omitted</AccountNumber>
    <MeterNumber>omitted</MeterNumber>
  </ClientDetail>
  <Version>
    <ServiceId>crs</ServiceId>
    <Major>28</Major>
    <Intermediate>0</Intermediate>
    <Minor>0</Minor>
  </Version>
  <RequestedShipment>
    <ServiceType>FEDEX_2_DAY</ServiceType>
    <Shipper>
      <Address>
        <StreetLines>4500 WEST 46TH STREET</StreetLines>
        <City>CHICAGO</City>
        <StateOrProvinceCode>IL</StateOrProvinceCode>
        <PostalCode>60632</PostalCode>
        <CountryCode>US</CountryCode>
      </Address>
    </Shipper>
    <Recipient>
      <Address>
        <City>TAMPA</City>
        <StateOrProvinceCode>FL</StateOrProvinceCode>
        <PostalCode>33616</PostalCode>
        <CountryCode>US</CountryCode>
      </Address>
    </Recipient>
    <PackageCount>1</PackageCount>
    <RequestedPackageLineItems>
      <SequenceNumber>1</SequenceNumber>
      <GroupPackageCount>1</GroupPackageCount>
      <Weight>
        <Units>LB</Units>
        <Value>10</Value>
      </Weight>
    </RequestedPackageLineItems>
  </RequestedShipment>
</RateRequest>

【问题讨论】:

    标签: integration fedex


    【解决方案1】:

    看起来你快到了。您的 xml 文档的根元素缺少命名空间 http://fedex.com/ws/rate/v28

    在 SOAP 消息中,名称空间将在 Envelope 元素上定义。因为通过纯 XML 接口发送的数据不包含特定于 SOAP 的包装 Envelope 和 Body 标签,所以您必须将命名空间添加到 RateRequest 元素。

    您的请求应该是:

    <RateRequest xmlns="http://fedex.com/ws/rate/v28">
      <WebAuthenticationDetail>
        <UserCredential>
          <Key>omitted</Key>
          <Password>omitted</Password>
        </UserCredential>
      </WebAuthenticationDetail>
      <ClientDetail>
        <AccountNumber>omitted</AccountNumber>
        <MeterNumber>omitted</MeterNumber>
      </ClientDetail>
      <Version>
        <ServiceId>crs</ServiceId>
        <Major>28</Major>
        <Intermediate>0</Intermediate>
        <Minor>0</Minor>
      </Version>
      <RequestedShipment>
        <ServiceType>FEDEX_2_DAY</ServiceType>
        <Shipper>
          <Address>
            <StreetLines>4500 WEST 46TH STREET</StreetLines>
            <City>CHICAGO</City>
            <StateOrProvinceCode>IL</StateOrProvinceCode>
            <PostalCode>60632</PostalCode>
            <CountryCode>US</CountryCode>
          </Address>
        </Shipper>
        <Recipient>
          <Address>
            <City>TAMPA</City>
            <StateOrProvinceCode>FL</StateOrProvinceCode>
            <PostalCode>33616</PostalCode>
            <CountryCode>US</CountryCode>
          </Address>
        </Recipient>
        <PackageCount>1</PackageCount>
        <RequestedPackageLineItems>
          <SequenceNumber>1</SequenceNumber>
          <GroupPackageCount>1</GroupPackageCount>
          <Weight>
            <Units>LB</Units>
            <Value>10</Value>
          </Weight>
        </RequestedPackageLineItems>
      </RequestedShipment>
    </RateRequest>
    

    另外,不要忘记在您的请求中设置以下标头:

    Accept: image/gif, image/jpeg, image/pjpeg, text/plain, text/html, */*
    Content-Type: text/xml
    

    【讨论】:

    • 你好迭戈!非常感谢你!一旦我完成了盘子上的 500 万件其他事情,我会继续尝试这个,哈哈。我正在度假,所以我花了一点时间回复。当我知道的时候,我会告诉你判决的。我希望你度过了一个愉快的假期。
    • Diego Colantoni - 将此确切请求发送到wsbeta.fedex.com:443/xml,我收到此错误消息:RateRequest 验证失败错误:cvc-elt.1:找不到元素“RateRequest”的声明。我将标题设置为文档中显示的内容。如果您有任何其他建议,请告诉我。再次感谢您的宝贵时间。
    • 嘿@KennethDale1!听起来 2021 年已经让你很忙了。我刚刚尝试发送完全相同的请求,并且确实得到了成功的响应。 IE。 curl --header "Accept: image/gif, image/jpeg, image/pjpeg, text/plain, text/html, */*" --header "Content-Type: text/xml" --data @request.txt "https://wsbeta.fedex.com:443/xml" 其中 request.txt 包含请求正文。我知道 FedEx 过去几周一直在更新测试环境(请参阅 FedEx announcements),也许现在再试一次?
    • 你好迭戈!有效!我的工作没有在分支上,所以我一直在尝试通过 Postman。没有让它通过那里,但将命名空间添加到我的 C# 根元素中,这似乎起到了作用。我可以发誓我之前尝试过这个......也许它确实与测试环境更新有关。无论如何,感谢您的所有帮助!希望其他人能从这篇文章中受益!
    • 嗨,肯尼斯,好消息!我一直在关注FedEx docs,但发现它们有时势不可挡。很高兴它最终奏效了!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多