开发手册 欢迎您!
软件开发者资料库

Python使用requests、urllib2、httplib2、http.client执行Get和Post请求

Python(Python2和Python3)中后台执行Get和Post有一些方法,本文主要介绍使用requests、urllib2、httplib2、http.client执行Get和Post请求方法及示例代码。

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 requestsurl = 'https://...'payload = {'key1': 'value1', 'key2': 'value2'}# GETr = requests.get(url)# GET with params in URLr = requests.get(url, params=payload)# POST with form-encoded datar = requests.post(url, data=payload)# POST with JSON import jsonr = requests.post(url, data=json.dumps(payload))# Response, status etcr.textr.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 pythonimport urllibimport httplib2http = 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/python3import urllib.parseimport httplib2http = 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 python3import http.clientimport jsonprint("\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)