python - 如何使用Python的REQUESTS包发出post请求?

标签 python python-requests

我正在尝试使用 toggl api。

我使用 Requests 而不是 Urllib2 来执行 GET 和 POSTS。但我被困住了。

payload = {
    "project":{
        "name":"Another Project",
        "billable":False,
        "workspace":{
            "Name":"jorrebor's workspace",
            "id":213272
        },
        "automatically_calculate_estimated_workhours":False
    }
}

url = "https://www.toggl.com/api/v6/projects.json"
r = requests.post(url, data=json.dumps(payload), auth=HTTPBasicAuth('<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="1872476060606060587f75797174367b7775" rel="noreferrer noopener nofollow">[email protected]</a>', 'mypassword'))

身份验证似乎没问题,但有效负载格式可能不太好。

具有相同参数的curl命令:

curl -v -u heremytoken:api_token -H "Content-type: application/json" -d "{\"project\":{\"billable\":true,\"workspace\":{\"id\":213272},\"name\":\"Another project\",\"automatically_calculate_estimated_workhours\":false}}" -X POST https://www.toggl.com/api/v6/projects.json

工作正常。

我的负载有什么问题吗?得到的响应是: ["名称不能为空","工作空间不能为空"]

这让我得出结论,身份验证有效,但 toggl 无法读取我的 json 对象。

最佳答案

似乎您应该尝试将 header 设置为 JSON 应用程序,而不是默认格式,并发送 JSON 对象而不是 Python dict。在这里查看:

payload = {"project":{"name":"Another Project",
                     "billable":False,
                     "workspace":{"Name":"jorrebor's workspace",
                                  "id":213272},
                     "automatically_calculate_estimated_workhours":False
                      }   } 

parameters_json = json.dumps(payload)
headers = {'Content-Type': 'application/json')
r = client.post(url, data=parameters_json, headers=headers)

这应该允许站点很好地读取 json 对象。

关于python - 如何使用Python的REQUESTS包发出post请求?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10065707/

相关文章:

python - 如何将更新后的页面内容传递给另一个函数?

python - 为什么从浏览器发送的表单和 SimpleHttpServer 捕获的请求之间存在差异

python - 使用 Python 请求的异步请求

python - 在 DataFrame 中将 bool 值转换为字符串

python - python 中的recvmsg 相当于什么?

Python - 最小化卡方

python - 如何使用列键访问 jinja 模板中的 SQLalchemy 对象

Python 括号子字符串不起作用,为什么?

Python 请求 : downloaded image is corrupted

python-requests - django-silk 显示所有查询的时间为 0