使用python发出发布请求时,如何解决解析错误?

时间:2020-07-04 04:16:23

标签: python http post python-requests google-drive-api

linetype()

我正在尝试请求将file_id复制到请求中列出的父文件夹中。我对Google Drive的api和发出发布请求都是陌生的,我不明白自己在做什么错。我已经在这个问题上工作了多个小时,并且收到一个错误响应代码400 Parse Error。从我收集到的信息来看,这意味着我的请求格式不正确。我已经尝试了很长时间了,我不知道该如何正确地做。如果有人可以帮助我,将不胜感激,或指出我可以自行解决此问题的地方。我一直在阅读文档,也许我咬得更多了才可以咀嚼。谢谢。

1 个答案:

答案 0 :(得分:1)

我相信您的目标和情况如下。

  • 您要使用Drive API v3和python requests复制Google Drive上的文件。
  • 您已经具有用于使用Drive API复制文件的访问令牌。

为了实现您的目标,我想提出以下修改。

修改点:

  • 请为查询参数设置fieldssupportsAllDrivesignoreDefaultVisibility的值。

  • 请将fieldsfiles(id)修改为id

  • 请求正文如下。

      data = {
          "parents": ["1zaxxxxxxxxxxxxxxxZo"],
          "name": selected_name
      }
    
  • 请将data=data修改为data=json.dumps(data)

当以上几点反映到您的脚本时,它如下所示。

修改后的脚本:

import json
import requests

file_id = "###"  # Please set the source file ID.
selected_name = "###"  # Please set the filename.

headers = {
    "Authorization": "Bearer "+creds.token,
    "Accept": "application/json",
    "Content-Type": "application/json"
}
data = {
    "parents": ["1zaxxxxxxxxxxxxxxxZo"],  # Please set the folder ID.
    "name": selected_name
}
params = {
    "fields": "id",
    "supportsAllDrives": True,
    "ignoreDefaultVisibility": True
}
response = requests.post("https://www.googleapis.com/drive/v3/files/"+file_id+"/copy", data=json.dumps(data), params=params, headers=headers)
response = response.json()
print(response)

结果:

运行上述脚本时,将显示以下值。

{'id': '###'}

注意:

  • 此修改后的脚本假定您的访问令牌creds.token可用于使用Drive API复制文件。请注意这一点。

参考: