1. 程式人生 > 實用技巧 >request取值相關

request取值相關

傳送資料格式與對應接收方法

方式一:
    request.post(
        url='xx',
        data={'k1':'v1,'k2':'v2'}
    )
    #資料:  POST /  http1.1\r\nContent-type:urlencode-form.......\r\n\r\nk1=v1&k2=v2

    
    request.POST必然可以獲取到值。
        - content-type: urlencode-form
        - 資料格式:k1=v1&k2=v2

方式二:
    request.post(
        url
='xx', json={'k1':'v1,'k2':'v2'} ) #資料: POST / http1.1\r\nContent-type:application/json....\r\n\r\n{'k1':'v1,'k2':'v2'} request.body取到的資料是位元組格式的,需要轉化為字串,然後進行反序列化就能拿到子彈 位元組 = {'k1':'v1,'k2':'v2'} 位元組轉換字串 反序列化字串 -> 字典 request.POST必然不可以獲取到值的情況:
- content-type: urlencode-form - 資料格式:k1=v1&k2=v2

知識點:

在chrome中如果看到的資料是Form Data ,那麼它的資料是如下格式構造出來的
    Form Data:
        phone=861513125555&password=12312312312&oneMonth=1
        
        進行資料偽造的時候:
        reqeusts.post(
            url=url,
            data={
                phone:
123123123123, password:asdfasdf } ) 如果看到的資料為Request Payload: {"BaseRequest":{"Uin":981579400,"Sid":"zWvteTWqBop4heoT","Skey":"@crypt_2ccf8ab9_a710cf413c932e201987599558063c8e","DeviceID":"e358217921593270"},"Msg":{"Type":1,"Content":"test","FromUserName":"@60eef3f2d212721fda0aae891115aa7a","ToUserName":"@@6a5403f510a3192454ed1afebd78ec6033d5057c9038d7b943b201f0a74987d4","LocalID":"15300708105840758","ClientMsgId":"15300708105840758"},"Scene":0} 進行資料偽造的時候: reqeusts.post( url=url, json={ phone:123123123123, password:asdfasdf } ) 或者: reqeusts.post( url=url, data=bytes(json.dumps({ phone:123123123123, password:asdfasdf }),encoding=utf-8) )

傳送的資料與對應發過去的格式:

data:
    request.post(
        url='xx',
        data={'k1':'v1,'k2':'v2'}
    )
    #資料:  POST /  http1.1\r\n....\r\n\r\nk1=v1&k2=v2
    
    
    request.post(
        url='xx',
        data=json.dumps({'k1':'v1,'k2':'v2'})
    )
    #資料:  POST /  http1.1\r\n....\r\n\r\n{'k1':'v1,'k2':'v2'}
    
    request.post(
        url='xx',
        data=b'asdfasdf'
    )
    #資料:  POST /  http1.1\r\n....\r\n\r\n'asdfasdf'
json:
    request.post(
        url='xx',
        json={'k1':'v1,'k2':'v2'}
    )
    #資料:  POST /  http1.1\r\nContent-type:application/json....\r\n\r\n{'k1':'v1,'k2':'v2'}