下面是详细讲解“python使用urllib2提交http post请求的方法”的完整攻略。
1. HTTP POST 请求和 urllib2
HTTP POST请求是向指定的URL传递数据信息的一种请求方式,这些请求参数包含在请求体中,而不是在URL中,与之相对的是HTTP GET请求,GET请求的参数会以查询字符串的方式附加在URL后面。
Python的 urllib2 模块可以方便地提交POST请求,下面将给出两个示例进行说明。
2. 示例1
假设我们要提交一个名为 name 的变量和一个名为 age 的变量给 http://localhost:8000/update_user 接口,我们可以使用如下的代码进行提交:
import urllib
import urllib2
url = 'http://localhost:8000/update_user'
values = {'name': 'John', 'age': 25}
data = urllib.urlencode(values)
req = urllib2.Request(url, data)
response = urllib2.urlopen(req)
result = response.read()
print result
在上面的示例中,我们首先使用了urllib.urlencode函数将名值对字典转换为URL编码格式的字符串,然后构造了一个Request对象,将URL和数据作为参数传递进去,接着使用urllib2.urlopen方法打开URL,返回的response对象的read()方法获取到返回结果的字符串。
3. 示例2
如果需要提交 JSON 数据,则需要使用如下代码:
import json
import urllib2
url = "http://localhost:8000/update_user"
data = {"name": "Jack", "age": 30}
headers = {"Content-Type": "application/json;charset=UTF-8"}
req = urllib2.Request(url, json.dumps(data), headers=headers)
response = urllib2.urlopen(req)
result = response.read()
print result
上面示例中,我们首先使用了json.dumps函数将字典转换为json字符串,然后设置了Content-Type为application/json;charset=UTF-8的header,构造了一个Request对象,将URL、数据和header作为参数传递进去,接着使用urllib2.urlopen方法打开URL,返回的response对象的read()方法获取到返回结果的字符串。
4. 总结
在Python中,使用 urllib2 模块可以很方便地提交 HTTP POST 请求。需要注意的是, POST 请求的数据需要进行urlencode或者json编码,还需要设置Content-Type header。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:python使用urllib2提交http post请求的方法 - Python技术站