http - 当一批中有多个 PATCH 请求时,为什么我的 Drive API 请求会失败?

标签 http google-api google-drive-api http-patch

我正在尝试为我的大量 Google Drive 文件添加一个新的父文件夹。我正在使用批处理请求来避免发送太多请求,但是当有多个 PATCH 请求添加到批处理时,这不起作用。 Google 服务器正在返回 502 Bad Gateway HTTP 错误响应。出了什么问题或我该如何解决?

一般:

Remote Address:216.58.196.138:443
Request URL:https://content.googleapis.com/batch
Request Method:POST
Status Code:502 OK

响应头:

alt-svc:quic=":443"; ma=604800; v="30,29,28,27,26,25"
alternate-protocol:443:quic,p=1
content-length:1613
content-type:text/html; charset=UTF-8
date:Tue, 01 Dec 2015 06:18:36 GMT
server:GFE/2.0
status:502

请求 header :

:authority:content.googleapis.com
:method:POST
:path:/batch
:scheme:https
accept:*/*
accept-encoding:gzip, deflate
accept-language:ru,en-US;q=0.8,en;q=0.6,de;q=0.4,pt;q=0.2,uk;q=0.2,it;q=0.2
authorization:Bearer ya29.PQI-rcaU2_Pd7tq3XufXVWPfje4ioMzBLhvKOieYuFgs2MnxTyQvtJ0QDR7EiWnN5SOPlGo
content-length:2291
content-type:multipart/mixed; boundary=batch691088898561756483
dnt:1
origin:https://content.googleapis.com
referer:https://content.googleapis.com/static/proxy.html?jsh=m%3B%2F_%2Fscs%2Fapps-static%2F_%2Fjs%2Fk%3Doz.gapi.en.Dm6zFqHZO9M.O%2Fm%3D__features__%2Fam%3DAQ%2Frt%3Dj%2Fd%3D1%2Ft%3Dzcms%2Frs%3DAGLTcCPQ-9iC9Y-vGIOJ-RoQCZkFL66QXw
user-agent:Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2490.86 Safari/537.36
x-chrome-uma-enabled:1
x-client-data:CKW2yQEIqbbJAQjEtskBCPCIygEI/ZXKAQi8mMoB
x-clientdetails:appVersion=5.0%20(Macintosh%3B%20Intel%20Mac%20OS%20X%2010_10_3)%20AppleWebKit%2F537.36%20(KHTML%2C%20like%20Gecko)%20Chrome%2F46.0.2490.86%20Safari%2F537.36&platform=MacIntel&userAgent=Mozilla%2F5.0%20(Macintosh%3B%20Intel%20Mac%20OS%20X%2010_10_3)%20AppleWebKit%2F537.36%20(KHTML%2C%20like%20Gecko)%20Chrome%2F46.0.2490.86%20Safari%2F537.36
x-goog-encode-response-if-executable:base64
x-javascript-user-agent:google-api-javascript-client/1.1.0-beta
x-origin:http://app.local
x-referer:http://app.local

请求负载:

--batch691088898561756483
Content-Type: application/http
Content-Transfer-Encoding: binary
Content-ID: <0B28tlN6SgYRacHVwdEQ5b1RtZmc>

PATCH /drive/v2/files/0B28tlN6SgYRacHVwdEQ5b1RtZmc?addParents=0B28tlN6SgYRaS2syM1VGWjllMnc
X-JavaScript-User-Agent: google-api-javascript-client/0.1
Authorization: Bearer ya29.PQI-rcaU2_Pd7tq3XufXVWPfje4ioMzBLhvKOieYuFgs2MnxTyQvtJ0QDR7EiWnN5SOPlGo
X-ClientDetails: appVersion=5.0%20(Macintosh%3B%20Intel%20Mac%20OS%20X%2010_10_3)%20AppleWebKit%2F537.36%20(KHTML%2C%20like%20Gecko)%20Chrome%2F46.0.2490.86%20Safari%2F537.36&platform=MacIntel&userAgent=Mozilla%2F5.0%20(Macintosh%3B%20Intel%20Mac%20OS%20X%2010_10_3)%20AppleWebKit%2F537.36%20(KHTML%2C%20like%20Gecko)%20Chrome%2F46.0.2490.86%20Safari%2F537.36

--batch691088898561756483
Content-Type: application/http
Content-Transfer-Encoding: binary
Content-ID: <0B28tlN6SgYRadVFRV0lRQW1kVlE>

PATCH /drive/v2/files/0B28tlN6SgYRadVFRV0lRQW1kVlE?addParents=0B28tlN6SgYRaS2syM1VGWjllMnc
X-JavaScript-User-Agent: google-api-javascript-client/0.1
Authorization: Bearer ya29.PQI-rcaU2_Pd7tq3XufXVWPfje4ioMzBLhvKOieYuFgs2MnxTyQvtJ0QDR7EiWnN5SOPlGo
X-ClientDetails: appVersion=5.0%20(Macintosh%3B%20Intel%20Mac%20OS%20X%2010_10_3)%20AppleWebKit%2F537.36%20(KHTML%2C%20like%20Gecko)%20Chrome%2F46.0.2490.86%20Safari%2F537.36&platform=MacIntel&userAgent=Mozilla%2F5.0%20(Macintosh%3B%20Intel%20Mac%20OS%20X%2010_10_3)%20AppleWebKit%2F537.36%20(KHTML%2C%20like%20Gecko)%20Chrome%2F46.0.2490.86%20Safari%2F537.36

--batch691088898561756483
Content-Type: application/http
Content-Transfer-Encoding: binary
Content-ID: <0B28tlN6SgYRaLW1qYmxrZUV2S0E>

PATCH /drive/v2/files/0B28tlN6SgYRaLW1qYmxrZUV2S0E?addParents=0B28tlN6SgYRaS2syM1VGWjllMnc
X-JavaScript-User-Agent: google-api-javascript-client/0.1
Authorization: Bearer ya29.PQI-rcaU2_Pd7tq3XufXVWPfje4ioMzBLhvKOieYuFgs2MnxTyQvtJ0QDR7EiWnN5SOPlGo
X-ClientDetails: appVersion=5.0%20(Macintosh%3B%20Intel%20Mac%20OS%20X%2010_10_3)%20AppleWebKit%2F537.36%20(KHTML%2C%20like%20Gecko)%20Chrome%2F46.0.2490.86%20Safari%2F537.36&platform=MacIntel&userAgent=Mozilla%2F5.0%20(Macintosh%3B%20Intel%20Mac%20OS%20X%2010_10_3)%20AppleWebKit%2F537.36%20(KHTML%2C%20like%20Gecko)%20Chrome%2F46.0.2490.86%20Safari%2F537.36

--batch691088898561756483--

最佳答案

尝试将 URL 更改为 https://www.googleapis.com/batch 而不是 https://content.googleapis.com/batch

使用您的确切请求和数据但更改 URL,我收到了 200,每个请求都有身份验证错误,正如旧 token 所预期的那样。

HTTP/1.1 200 OK
Vary: Origin
Vary: X-Origin
Content-Type: multipart/mixed; boundary=batch_NP9EsgqJk5k_AAFjWZ0MHaM
Date: Thu, 03 Dec 2015 13:52:18 GMT
Expires: Thu, 03 Dec 2015 13:52:18 GMT
Cache-Control: private, max-age=0
X-Content-Type-Options: nosniff
X-Frame-Options: SAMEORIGIN
X-XSS-Protection: 1; mode=block
Server: GSE
Alternate-Protocol: 443:quic,p=1
Alt-Svc: quic=":443"; ma=604800; v="30,29,28,27,26,25"
Content-Length: 2027

--batch_NP9EsgqJk5k_AAFjWZ0MHaM
Content-Type: application/http
Content-ID: <response-0B28tlN6SgYRacHVwdEQ5b1RtZmc>

HTTP/1.1 401 Unauthorized
WWW-Authenticate: Bearer realm="https://accounts.google.com/", error=invalid_token
Content-Type: application/json; charset=UTF-8
Date: Thu, 03 Dec 2015 13:52:18 GMT
Expires: Thu, 03 Dec 2015 13:52:18 GMT
Cache-Control: private, max-age=0
Content-Length: 249

{
 "error": {
  "errors": [
   {
    "domain": "global",
    "reason": "authError",
    "message": "Invalid Credentials",
    "locationType": "header",
    "location": "Authorization"
   }
  ],
  "code": 401,
  "message": "Invalid Credentials"
 }
}

--batch_NP9EsgqJk5k_AAFjWZ0MHaM
Content-Type: application/http
Content-ID: <response-0B28tlN6SgYRadVFRV0lRQW1kVlE>

HTTP/1.1 401 Unauthorized
WWW-Authenticate: Bearer realm="https://accounts.google.com/", error=invalid_token
Content-Type: application/json; charset=UTF-8
Date: Thu, 03 Dec 2015 13:52:18 GMT
Expires: Thu, 03 Dec 2015 13:52:18 GMT
Cache-Control: private, max-age=0
Content-Length: 249

{
 "error": {
  "errors": [
   {
    "domain": "global",
    "reason": "authError",
    "message": "Invalid Credentials",
    "locationType": "header",
    "location": "Authorization"
   }
  ],
  "code": 401,
  "message": "Invalid Credentials"
 }
}

--batch_NP9EsgqJk5k_AAFjWZ0MHaM
Content-Type: application/http
Content-ID: <response-0B28tlN6SgYRaLW1qYmxrZUV2S0E>

HTTP/1.1 401 Unauthorized
WWW-Authenticate: Bearer realm="https://accounts.google.com/", error=invalid_token
Content-Type: application/json; charset=UTF-8
Date: Thu, 03 Dec 2015 13:52:18 GMT
Expires: Thu, 03 Dec 2015 13:52:18 GMT
Cache-Control: private, max-age=0
Content-Length: 249

{
 "error": {
  "errors": [
   {
    "domain": "global",
    "reason": "authError",
    "message": "Invalid Credentials",
    "locationType": "header",
    "location": "Authorization"
   }
  ],
  "code": 401,
  "message": "Invalid Credentials"
 }
}

--batch_NP9EsgqJk5k_AAFjWZ0MHaM--

关于http - 当一批中有多个 PATCH 请求时,为什么我的 Drive API 请求会失败?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34014028/

相关文章:

android - HttpConnection 中的 setAllowUserInteraction() 是什么

flutter - Flutter-是否可以在Flutter移动应用程序中获取网站文字?

javascript - 让我的用户使用 Google 登录的首选 JavaScript 方法实际上是什么?

javascript - 在 JavaScript 中将时间戳转换为毫秒

python - 如何使用 Python 将 .docx 文件上传到我的 Google 云端硬盘?

python - 是否可以使用签名的 JWT 对 Google Drive API 进行授权调用?

python - PyDrive 在 Google Drive 中创建文件夹 - 错误为 AttributeError : 'GoogleDrive' object has no attribute 'files

java - 使用 Netty HTTP 客户端重试请求

HTTP接受协商算法

javascript - 如何在 Chrome 扩展中为 OAuth2 提供重定向 URL?