1、使用requests执行
requests在Python2和Python3用法基本相同,有小的区别:python3中response.text是str数据类型,而response.content是bytes类型,python2中response.text是unicode数据类型,而response.content是字符串类型。
相关文档:https://2.python-requests.org//zh_CN/latest/user/quickstart.html
import requests url = 'https://...' payload = {'key1': 'value1', 'key2': 'value2'} # GET r = requests.get(url) # GET with params in URL r = requests.get(url, params=payload) # POST with form-encoded data r = requests.post(url, data=payload) # POST with JSON import json r = requests.post(url, data=json.dumps(payload)) # Response, status etc r.text r.status_code
2、使用urllib2执行
urllib2模块在Python 3中名为分成urllib.request
和 urllib.error
。在将源代码转换为Python 3时,2to3工具将自动适应导入。
相关文档:https://docs.python.org/2/library/urllib2.html
def URLRequest(url, params, method="GET"): if method == "POST": return urllib2.Request(url, data=urllib.urlencode(params)) else: return urllib2.Request(url + "?" + urllib.urlencode(params))
3、使用httplib2执行
相关文档:
https://github.com/jcgregorio/httplib2
https://github.com/httplib2/httplib2/wiki/Examples
https://github.com/httplib2/httplib2/wiki/Examples-Python3
1) Python2中执行
#!/usr/bin/env python import urllib import httplib2 http = httplib2.Http() url = 'http://www.example.com/login' body = {'USERNAME': 'foo', 'PASSWORD': 'bar'} headers = {'Content-type': 'application/x-www-form-urlencoded'} response, content = http.request(url, 'POST', headers=headers, body=urllib.urlencode(body)) headers = {'Cookie': response['set-cookie']} url = 'http://www.example.com/home' response, content = http.request(url, 'GET', headers=headers)
2) Python3中执行
#!/usr/bin/python3 import urllib.parse import httplib2 http = httplib2.Http() url = 'http://www.example.com/login' body = {'USERNAME': 'foo', 'PASSWORD': 'bar'} headers = {'Content-type': 'application/x-www-form-urlencoded'} response, content = http.request(url, 'POST', headers=headers, body=urllib.parse.urlencode(body)) headers = {'Cookie': response['set-cookie']} url = 'http://www.example.com/home' response, content = http.request(url, 'GET', headers=headers)
4、Python3使用http.client执行
相关文档:https://docs.python.org/3/library/http.client.html
#!/usr/bin/env python3 import http.client import json print("\n GET example") conn = http.client.HTTPSConnection("httpbin.org") conn.request("GET", "/get") response = conn.getresponse() data = response.read().decode('utf-8') print(response.status, response.reason) print(data) print("\n POST example") conn = http.client.HTTPSConnection('httpbin.org') headers = {'Content-type': 'application/json'} post_body = {'text': 'testing post'} json_data = json.dumps(post_body) conn.request('POST', '/post', json_data, headers) response = conn.getresponse() print(response.read().decode()) print(response.status, response.reason) print("\n PUT example ") conn = http.client.HTTPSConnection('httpbin.org') headers = {'Content-type': 'application/json'} post_body ={'text': 'testing put'} json_data = json.dumps(post_body) conn.request('PUT', '/put', json_data, headers) response = conn.getresponse() print(response.read().decode(), response.reason) print(response.status, response.reason) print("\n delete example") conn = http.client.HTTPSConnection('httpbin.org') headers = {'Content-type': 'application/json'} post_body ={'text': 'testing delete'} json_data = json.dumps(post_body) conn.request('DELETE', '/delete', json_data, headers) response = conn.getresponse() print(response.read().decode(), response.reason) print(response.status, response.reason)