python - 如何使用 urllib3 在 Python 上发出 Post 请求?

标签 python json curl urllib3

我一直在尝试向 API 发出请求,我必须传递以下正文:

{
"description":"Tenaris",
"ticker":"TS.BA",
"industry":"Metalúrgica",
"currency":"ARS"
}

尽管代码看起来是正确的,并且以“进程结束,退出代码为 0”结束,但它运行不正常。我不知道我错过了什么,但这是我的代码:

http = urllib3.PoolManager()
http.urlopen('POST', 'http://localhost:8080/assets', headers={'Content-Type':'application/json'},
                 data={
"description":"Tenaris",
"ticker":"TS.BA",
"industry":"Metalúrgica",
"currency":"ARS"
})

顺便说一句,这是第一天使用 Python,如果我不够具体,请原谅。

最佳答案

由于您正在尝试传递 JSON 请求,因此您需要将正文编码为 JSON 并使用 body 字段将其传递。

对于您的示例,您想执行以下操作:

import json
encoded_body = json.dumps({
        "description": "Tenaris",
        "ticker": "TS.BA",
        "industry": "Metalúrgica",
        "currency": "ARS",
    })

http = urllib3.PoolManager()

r = http.request('POST', 'http://localhost:8080/assets',
                 headers={'Content-Type': 'application/json'},
                 body=encoded_body)

print r.read() # Do something with the response?

编辑:我原来的回答是错误的。更新它以对 JSON 进行编码。另外,相关问题:How do I pass raw POST data into urllib3?

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

相关文章:

python - 使用 Python 将所有压缩文件提取到同一目录

O(n) 时间的 Python Fibonacci 递归(而不是迭代)?

javascript - jQuery 访问 JSON 对象?

java - 当尝试解析给定的 json 格式 android 时,我在解析给定值时遇到错误

ajax - 使用 polymer core-ajax 向 golang 服务器发布请求?

python - 如何在 tensorflow 服务中添加新模型

python - Unresolved reference pycharm 无法识别其下的类

javascript - JSON 删除也会删除源变量中的属性

bash - 使用单个 session 在 shell/bash 中递归 FTP 目录列表(使用 cURL 或 ftp)

php curl -k 或 --insecure, -X