python接口自动化之发送post(四)

 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参数

posted @ 2019-12-26 15:12  在树上唱歌w  阅读(354)  评论(0编辑  收藏  举报