【问题标题】:how to make post request in python如何在python中发出post请求
【发布时间】:2015-04-12 14:40:17
【问题描述】:

这是 curl 命令:

curl -H "X-API-TOKEN: <API-TOKEN>" 'http://foo.com/foo/bar' --data # 

让我解释一下数据中的内容

POST /foo/bar
Input (request JSON body)

Name    Type    
title   string  
body    string

所以,基于此..我想:

curl -H "X-API-TOKEN: " 'http://foo.com/foo/bar' --data '{"title":"foobar","body": "这个正文有 "双" 和 '单' 引号" }'

不幸的是,我也无法弄清楚(例如来自 cli 的 curl) 虽然我想使用 python 来发送这个请求。 我该怎么做?

【问题讨论】:

  • 你试过一个叫pycurl的库吗?它实际上是 curl 的模拟,具有完全相同的设置和几乎相同的语法。

标签: python curl


【解决方案1】:

使用标准 Python httpliburllib 库,您可以做到

import httplib, urllib

headers = {'X-API-TOKEN': 'your_token_here'}
payload = "'title'='value1'&'name'='value2'"

conn = httplib.HTTPConnection("heise.de")
conn.request("POST", "", payload, headers)
response = conn.getresponse()

print response

或者,如果您想使用名为 "Requests" 的漂亮 HTTP 库。

import requests

headers = {'X-API-TOKEN': 'your_token_here'}
payload = {'title': 'value1', 'name': 'value2'}

r = requests.post("http://foo.com/foo/bar", data=payload, headers=headers)

【讨论】:

  • 我都用过,我更喜欢 Requests 比其他人更简单。
  • 请注意,requests提供了json响应体解析的内置函数:respJsonDict = r.json()
  • 在请求示例中,如果有效负载是 json 结构,则应该显示 json=payload,而不是 data=payload,就像这里...
猜你喜欢
  • 1970-01-01
  • 2014-07-07
  • 1970-01-01
  • 1970-01-01
  • 2012-06-25
  • 1970-01-01
  • 2017-11-28
  • 2017-11-17
  • 1970-01-01
相关资源
最近更新 更多