【问题标题】:Batch request - 400 bad request response批量请求 - 400 错误请求响应
【发布时间】:2014-08-19 03:58:04
【问题描述】:

我正在发送以下批处理请求以获取线程:

POST /batch HTTP/1.1
Host: www.googleapis.com
Accept-Encoding: gzip
User-Agent: Magin (gzip)
Accept-Language: en;q=1, fr;q=0.9, de;q=0.8, zh-Hans;q=0.7, zh-Hant;q=0.6, ja;q=0.5
Content-Type: multipart/mixed; type="application/http"; boundary="737d0154-1999-455c-9886-65d7121a1382"

access_token=accToken&quotaUser=user

--737d0154-1999-455c-9886-65d7121a1382
Content-Type: application/http
Content-ID: <0x8d93fa0>

GET /gmail/v1/users/me/threads/146df2dd11472f07 HTTP/1.1
Host: googleapis.com
Accept-Encoding: gzip
User-Agent: Magin (gzip)
Accept-Language: en;q=1, fr;q=0.9, de;q=0.8, zh-Hans;q=0.7, zh-Hant;q=0.6, ja;q=0.5


--737d0154-1999-455c-9886-65d7121a1382
Content-Type: application/http
Content-ID: <0x8d93190>

GET /gmail/v1/users/me/threads/146df14c9a13b5d9 HTTP/1.1
Host: googleapis.com
Accept-Encoding: gzip
User-Agent: Magin (gzip)
Accept-Language: en;q=1, fr;q=0.9, de;q=0.8, zh-Hans;q=0.7, zh-Hant;q=0.6, ja;q=0.5


--737d0154-1999-455c-9886-65d7121a1382
Content-Type: application/http
Content-ID: <0x8d93190>

GET /gmail/v1/users/me/threads/146def434891a5b0 HTTP/1.1
Host: googleapis.com
Accept-Encoding: gzip
User-Agent: Magin (gzip)
Accept-Language: en;q=1, fr;q=0.9, de;q=0.8, zh-Hans;q=0.7, zh-Hant;q=0.6, ja;q=0.5


--737d0154-1999-455c-9886-65d7121a1382
Content-Type: application/http
Content-ID: <0x8d93190>

GET /gmail/v1/users/me/threads/146def1dbfe6579c HTTP/1.1
Host: googleapis.com
Accept-Encoding: gzip
User-Agent: Magin (gzip)
Accept-Language: en;q=1, fr;q=0.9, de;q=0.8, zh-Hans;q=0.7, zh-Hant;q=0.6, ja;q=0.5


--737d0154-1999-455c-9886-65d7121a1382
Content-Type: application/http
Content-ID: <0x8d93190>

GET /gmail/v1/users/me/threads/146def155ca0ab2b HTTP/1.1
Host: googleapis.com
Accept-Encoding: gzip
User-Agent: Magin (gzip)
Accept-Language: en;q=1, fr;q=0.9, de;q=0.8, zh-Hans;q=0.7, zh-Hant;q=0.6, ja;q=0.5
--737d0154-1999-455c-9886-65d7121a1382--

但是,我从 Google 服务器收到 400 bad request 作为响应:请求失败:错误请求 (400)

任何想法为什么会发生这种情况以及如何解决它?

编辑:有趣的行为:如果有

【问题讨论】:

  • 根据the multipart spec,忽略第一个边界之前和最后一个边界之后的内容。可能是您的 access_token 和 quotaUser 参数被忽略,导致错误。您是使用库来创建此消息,还是手动滚动?

标签: gmail-api


【解决方案1】:

我注意到两件事:

(1)第一部分Content-Type前的空格

(2) 在 POST 的最后(在它自己的行等上)缺少最后一个“--737d0154-1999-455c-9886-65d7121a1382--”,请注意后面的“--”边界也是...

【讨论】:

  • 啊,实际上 1) 和 2) 是因为 StackOverflow 格式。 (已解决)还有其他想法吗?
【解决方案2】:

在批处理请求中的嵌套调用为我修复它之前,我遇到了同样的问题,并且显然有 \r\n

例如:

--foo_bar 内容类型:application/http

GET /v1/people:searchContacts?query=query&pageSize=100 HTTP/1.1 --foo_bar 内容类型:application/http

GET /v1/otherContacts:search?query=a&pageSize=100&readMask=emailAddresses,names HTTP/1.1 --foo_bar 内容类型:application/http

GET /v1/people:searchDirectoryPeople?query=query&pageSize=100&readMask=emailAddresses,names HTTP/1.1 --foo_bar--

在 GET 之前有 \r\n 而不仅仅是 \n\n\n

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-01-07
    • 2015-04-28
    • 2017-02-17
    • 2023-03-23
    • 2017-09-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多