1. 程式人生 > >python的requests庫怎麼傳送帶cookies的請求

python的requests庫怎麼傳送帶cookies的請求

 背景:

  在用robot做介面自動化時,有一個查詢介面需要用到登入後返回的token等資訊作為cookies作為引數一起請求(token是在返回體中,並不在cookies中),

剛好create session關鍵字有cookies引數,但是傳cookies引數時,會報錯ValueError: need more than 1 value to unpack,耗費了很久沒有解決

${login_cookies}=    Create Dictionary    token=ef2f3216-a63c-4a84-93e1-86984812963e    memberNo=486497018462720
    Create Session    ${alias}    ${member_host}    headers
=${Content-Type} cookies=${login_cookies}

 解決:

所以計劃自己寫方法,將cookies手動新增到post請求中

 將cookies直接寫成字典,或者使用cookies = dict(token='24337265-335f-4258-bb65-aa294ab05d28',memberNo='486497018462720')轉為為字典

#coding:utf-8

import requests


def post_cookies():
    '''
    傳送帶有cookies的post請求,
    :return:
    
''' # cookies = dict(token='24337265-335f-4258-bb65-aa294ab05d28',memberNo='486497018462720') cookies = {"token": "24337265-335f-4258-bb65-aa294ab05d28", "memberNo":"486497018462720"} payload = {"memberNo": "486497018462720"} r = requests.post("http://bnetweixin.yto56test.com/member/memberCoreApi/queryIdentityUserInfo
", json=payload,cookies=cookies) print r.cookies print r.content post_cookies()

 測試:

 

 

payload引數如果是json格式的,一定要將payload傳遞給json引數,寫成data=json.dumps(payload)或者data=payload都不能正常請求,如下圖:

 

 後續:

  因為token等資訊是上一個介面的返回體,所以需要將這個post_cookies方法改造一下,將token和memberNo作為形參