首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >接收Shippo::Exception::APIServerError:在尝试新的Shippo托运时无法读取从服务器接收的数据

接收Shippo::Exception::APIServerError:在尝试新的Shippo托运时无法读取从服务器接收的数据
EN

Stack Overflow用户
提问于 2016-09-15 16:38:20
回答 1查看 223关注 0票数 0

在一个使用Shippo的Rails 4应用程序中,我将下面的散列传递给Shippo::Shipment.create(shippo_params),如API文档所示

代码语言:javascript
复制
{
:object_purpose => "PURCHASE",
         :async => false,
    :address_to => {
    "object_purpose" => "PURCHASE",
              "name" => "Test Guy",
           "street1" => "5000 Test St",
           "street2" => "",
              "city" => "New Orleans",
             "state" => "LA",
               "zip" => "70115",
           "country" => "US"
},
  :address_from => {
    "object_purpose" => "PURCHASE",
           "company" => "MyCompany",
           "street1" => "1305 Business Lane",
           "street2" => "Suite O",
              "city" => "New Orleans",
             "state" => "LA",
               "zip" => "70123",
           "country" => "US",
             "phone" => "+1 999 999 9999",
},
        :parcel => {
           "length" => 5,
            "width" => 5,
           "height" => 5,
    "distance_unit" => :in,
           "weight" => 1,
        "mass_unit" => :lb
}

}

然后收到错误:

代码语言:javascript
复制
Shippo::Exceptions::APIServerError: Unable to read data received back from the server.  

如果我使用API中引用的下面的params散列,它可以工作:

代码语言:javascript
复制
params   = { object_purpose: 'PURCHASE',
                    async:          false,
                    address_from:   {
                      object_purpose: 'PURCHASE',
                      name:           'Mr Hippo',
                      company:        'Shippo',
                      street1:        '215 Clayton St.',
                      street2:        '',
                      city:           'San Francisco',
                      state:          'CA',
                      zip:            '94117',
                      country:        'US',
                      phone:          '+1 555 341 9393',
                      email:          'support@goshippo.com' },
                    address_to:     {
                      object_purpose: 'PURCHASE',
                      name:           'Mrs Hippo"',
                      company:        'San Diego Zoo',
                      street1:        '2920 Zoo Drive',
                      city:           'San Diego',
                      state:          'CA',
                      zip:            '92101',
                      country:        'US',
                      phone:          '+1 555 341 9393',
                      email:          'hippo@goshippo.com' },
                    parcel:         {
                      length:        5,
                      width:         2,
                      height:        5,
                      distance_unit: :in,
                      weight:        2,
                      mass_unit:     :lb }
                    }

两者之间有细微的区别,在调用in时,前者在键中有一些转义引号,而另一个没有,但我不知道这有什么关系(或者为什么会这样设置)。

有人能告诉我有什么区别吗?为什么Shippo会返回这个错误?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-09-15 22:49:34

有两个问题:

  1. 在您的请求中,Address对象并不包含所有必需的字段。下面是一个处理数据的工作请求--我在两个地址中都添加了电子邮件值,向address_from对象添加了一个名称值:https://gist.github.com/simonkreuz/2da33c20d4015b0bc64079078db62ddc
  2. Shippo的Ruby包装器不能正确解析返回的API错误消息。API实际上是返回一个错误,指示Address对象没有包含所有必需的字段。我已经向https://github.com/goshippo/shippo-ruby-client/issues/22这里的Shippo工程团队提交了一张罚单。
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39516219

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档