最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

python?requests.post請求404問題及解決方法

 更新時間:2022年09月08日 10:29:07   作者:李飛飛_None  
這篇文章主要介紹了python?requests.post請求404問題,這里需要根據(jù)自己實際情況來分析當前接口接收數(shù)據(jù)時使用的是什么格式,但目前一般的網(wǎng)站都開始采用application/jsond的數(shù)據(jù)格式,本文通過圖文并茂的形式給大家介紹的非常詳細,需要的朋友可以參考下

問題場景

有時候,在編寫一段http接口請求程序時,發(fā)現(xiàn)代碼中的header頭和請求體中都是原網(wǎng)頁中一樣,但是,在實際請求時,接口卻返回404,代碼如下

header = {
    # ':authority': 'm.ctrip.com',
    # ':method': 'POST',
    # ':path': '/restapi/soa2/20405/getPCSightList',
    # ':scheme': 'https',
    'accept': '*/*',
    'accept-encoding': 'gzip, deflate, br',
    'accept-language': 'zh-CN,zh;q=0.9',
    'authorization': 'xx',
    'cache-control': "no-cache",
    'content-length': '373',
    'content-type': 'application/json;charset:utf-8;',
    'cookies': 'xx',
    'origin': 'https://www.tripadvisor.cn',
    'pragma': 'no-cache',
    'referer': 'https://www.tripadvisor.cn/Attractions-g60763-New_York_City_New_York-Vacations.html',
    'sec-ch-ua': "'.Not/A)Brand';v='99', 'Google Chrome';v='103', 'Chromium';v='103'",
    'sec-ch-ua-mobile': '?0',
    'sec-ch-ua-platform': 'macOS',
    'sec-fetch-dest': 'empty',
    'sec-fetch-mode': 'cors',
    'sec-fetch-site': 'cross-site',
    'user-agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.0.0 Safari/537.36',
    'x-ta-uid': 'cd58b674-7dba-484a-a908-3239120cd728'
}
url = 'https://m.ctrip.com/restapi/soa2/20405/getPCSightList'
data = {"geoId":60763,"pageIndex":1,"pageSize":30,"travelRanking":"false","needSelectedFilters":"true","filters":[{"type":"subcategory","param":""},{"type":"subtype","param":""},{"type":"neighborhood","param":""},{"type":"travelerRating","param":""},{"type":"awards","param":""},{"type":"waypointairport","param":""},{"type":"waypointstation","param":""},{"type":"other","param":""}]}
response = requests.post(url=url, data=data, headers=header)
print(response.status_code)

運行結(jié)果為

在這里插入圖片描述

問題分析

既然404,那就排查問題,data和header都是直接從復(fù)制瀏覽器中復(fù)制過來的,不會有問題,那有問題的必然是request.post中的方法問題
查看request.post源碼

在這里插入圖片描述

從源碼中可以看到,request.post可以接受兩個參數(shù),一個是data,還有一個是json,
data是以字典的形式發(fā)送body,json則是以json數(shù)據(jù)格式發(fā)送body
通過這兩個注釋可以很明顯的發(fā)現(xiàn),requests.post在發(fā)送請求時,會根據(jù)當前傳遞的參數(shù)來選擇不同的方式,可以理解為一種是表單形式,還有一種是json格式

postman測試

通過postman來測試兩種不同請求下的情況
form表單

在這里插入圖片描述

Json數(shù)據(jù)

在這里插入圖片描述

通過postman測試可以發(fā)現(xiàn),當前服務(wù)后端接口僅接受json格式的數(shù)據(jù),即content-type為application.json

問題解決

將原先代碼中data替換成json

response = requests.post(url=url, json=data, headers=JsonHeader)

在這里插入圖片描述

這個時候肯定有人會問,那我使用data傳遞數(shù)據(jù)時,將header頭中的content-type指定為application/json不就行了,但其實是不行的,就算自己指定了,最后request.body的值也是類似于key1=value1&key2=value2這種形式

結(jié)論

當request.post使用json來傳遞參數(shù)時,即使不指定content-type類型,也會默認指定application/json

在這里插入圖片描述

使用data傳遞參數(shù)時,將會以表單的形式進行提交,并且后續(xù)將通過urlencode轉(zhuǎn)換成字符串,及key1=value1&key2=value2的形式

在這里插入圖片描述

使用data時,即使指定了content-type也不會生效,后續(xù)將會被默認替換掉

在這里插入圖片描述

因此,需要根據(jù)自己實際情況來分析當前接口接收數(shù)據(jù)時使用的是什么格式,但目前一般的網(wǎng)站都開始采用application/jsond的數(shù)據(jù)格式

到此這篇關(guān)于python requests.post請求404問題的文章就介紹到這了,更多相關(guān)python requests.post請求內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評論

广元市| 利津县| 北辰区| 栖霞市| 宜都市| 南昌市| 长宁区| 肇源县| 繁峙县| 平山县| 印江| 麦盖提县| 股票| 灵武市| 葵青区| 平乐县| 开封县| 阿荣旗| 宜君县| 涪陵区| 南漳县| 阳高县| 泸定县| 宁城县| 大渡口区| 青冈县| 县级市| 无棣县| 长海县| 达州市| 苏尼特右旗| 法库县| 麻城市| 镇宁| 蒙城县| 革吉县| 平度市| 伊吾县| 望奎县| 通山县| 凯里市|