我一直在尝试向 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/