首页 > 技术文章 > get与post区别

echoqi 2019-04-08 20:20 原文

'''
当url为get方法,且使用params传递参数,执行结果
相同点:使用get和post都可以请求和响应成功
'''
def test_getmethod_usepost():
    payload={'q':'电影'}
    url='https://www.douban.com/search'  #get请求
    res1=requests.get(url,params=payload)
    print("res1_url****"+res1.url)
    #输出结果  . res1_url****https://www.douban.com/search?q=%E7%94%B5%E5%BD%B1
    print(res1.text)
    res2=requests.post(url,params=payload)
    print("res2_url****"+res2.url)
    #输出结果 res2_url****https://www.douban.com/search?q=%E7%94%B5%E5%BD%B1
    print(res2.text)




'''
当url为post方法,且需要添加请求body,执行结果
1、使用get请求失败,请求时不会拼接请求体

. res_url****https://accounts.douban.com/j/mobile/login/basic
<bound method Response.json of <Response [403]>>

2、使用post,请求体使用params添加请求body,请求失败

. res_url****https://accounts.douban.com/j/mobile/login/basic?ck=&name=18500910544&password=Echoque0612&remember=False&ticket=
<bound method Response.json of <Response [200]>>
用户名或密码错误
'''

def test_post():
    mypayload = {'ck': '', 'name': 'xxxx','password':'xxxxx','remember':False,'ticket':''}
    myheader={'User-Agent':'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.75 Safari/537.36'}
    url='https://accounts.douban.com/j/mobile/login/basic'
    #post方法传入请求体使用data或json
    res=requests.get(url,verify=False,headers=myheader,data=mypayload)        #异常
    # res=requests.post(url,verify=False,headers=myheader,data=mypayload)       #正常
    # res=requests.post(url,verify=False,headers=myheader,params=mypayload)     #异常

    print("res_url****"+res.url)
    print(res.json)
    print (res.json().get('description'))
    assert res.json().get('description')=='处理成功'
    
    ```

推荐阅读