1、ssl问题
目前很多的请求使用的都是较为安全的https请求,https请求相对于http安全级别更高,需要验证ssl证书
写代码的时候有两种可以忽略ssl验证的方法
(1)import urllib3
urllib3.disable_warnings() # 忽略警告
(2)在请求的时候设置verify=False #忽略验证
requests.get(url, verify=False)
2、post请求参数(常见的有四种,不止四种)
(1)Content-Type:application/json
直接传json=
# -*- coding:utf-8 -*- import requests host = 'xxxx' login_url = 'xxxxx' a = { "username": "test", "password": "123456" } # application/json 直接传json= r = requests.post(url=host+login_url, json=a) print(r.text) """ json= 是新版本加的功能 旧版本的方法是直接使用json对参数进行编码: import json a1 = json.dumps(a) requests.post(url, data=a1) """
(2)Content-Type:application/x-www-form-urlencode
直接data=
# -*- coding:utf-8 -*- import requests host = 'xxxxx' login_url = 'xxxxx' # application/x-www-form-urlencode # 参数username=test&password=123456 a = { "username": "test", "password": "123456" } # 直接传data= r = requests.post(url=host+login_url, data=a) print(r.text)
(3)xml格式的请求:Content-Type:text/xml
# -*- coding:utf-8 -*- import requests # xml格式请求 url = "http://www.example.com/" body = ''' <?xml version=“1.0” encoding = “UTF-8”?> <COM> <REQ name="上海-悠悠"> <USER_ID>yoyoketang</USER_ID> <COMMODITY_ID>123456</COMMODITY_ID> <SESSION_ID>absbnmasbnfmasbm1213</SESSION_ID> </REQ> </COM> ''' # 遇到编码报错时候,对body进行encode r = requests.post(url, data=body.encode("utf-8")) print(r.text)
3、data和json的区别
(1)抓包看头部Content-Type参数:
Content-Type:application/json 这种就是传json参数
Content-Type:application/x-www-form-urlencode 这种就是传data参数
(2)直接看格式
{“name”:“xxxxx”,“password”:“xxxxx”} 这种传json
name1=value1&name2=value2 这种传data参数