1、使用requests执行GET和POST请求
1)GET请求
import requests # 目标URL url = 'http://example.com/api' # 可选的参数字典 params = { 'key1': 'value1', 'key2': 'value2' } # 发起GET请求 response = requests.get(url, params=params) # 检查响应状态码 if response.status_code == 200: # 处理响应内容,例如解析JSON data = response.json() print(data) else: print('GET请求失败,状态码:', response.status_code)
2)POST请求
import requests # 目标URL url = 'http://example.com/api' # 要发送的数据 data = { 'key1': 'value1', 'key2': 'value2' } # 发起POST请求 response = requests.post(url, data=data) # 检查响应状态码 if response.status_code == 200: # 处理响应内容 data = response.json() print(data) else: print('POST请求失败,状态码:', response.status_code)
3)json参数和上传文件
json参数会使用json模块中的dumps方法转成json字符串,会请求头中的Content-Type:application/json,
import requests # 目标URL url = 'http://example.com/api' # 发送JSON数据 response = requests.post(url, json=data) # `json=data`会自动将字典序列化为JSON字符串 # 上传文件 files = {'file': open('report.xls', 'rb')} response = requests.post(url, files=files)
注意:json参数不需要提前使用json模块的方法转成json字符串。
2、调用微信接口
调用微信公众号或小程序接口时,需要注意POST请求传入数据编码问题,请求头中是否添加Content-Type:application/json
。
1)GET请求
import requests url ='https://api.weixin.qq.com/cgi-bin/token' # 可选的参数字典 params = { 'grant_typ': 'client_credential', 'appid': 'value1',# 'secret': 'value2'# } resp = requests.get(url, params=params) access_token = None expires_in = None if resp.status_code != 200: print(resp.status_code) else: json = resp.json() if "errcode" in json: print(json) else: access_token = json['access_token'] expires_in = json['expires_in']
2)POST请求
import requests import json url ='https://api.weixin.qq.com/wxa/msg_sec_check?access_token='+"token" params = { "content": content } headers = { "Content-Type": "application/json" } dataString = json.dumps(params, ensure_ascii=False) # 发起POST请求 response = requests.post(post_url, data=dataString.encode("utf-8"), headers=headers) # 检查响应状态码 if response.status_code == 200: # 处理响应内容 data = response.json() print(data) else: print('POST请求失败,状态码:', response.status_code) """ # 发送 POST 请求 # 如果 requests 使用的是 2.28.2,则使用这种方式 #resp = requests.post(post_url, data=dataString.encode("utf-8").decode("latin1"), headers=headers) # 如果 requests 使用的是 2.30.0,则使用这种方式 #resp = requests.post(post_url, data=dataString.encode("utf-8"), headers=headers) """
注意:Python 中使用的 requeset 版本,可能同样的代码在不同版本出现不同的结果。