簡體   English   中英

Python:請求中的POST數據問題

[英]Python: Issue with POST data in Requests

我正在嘗試使用Python 2.7中Requests 2.9.1來學習如何發送POST數據。 但是,我感到我在提供給請求的數據中丟失了某些內容,或者以某種方式對某些內容進行了格式錯誤,並且整夜都在努力工作。

我基於表單數據創建的網站是: http : //qpublic9.qpublic.net/la_orleans_address.php

我使用Charles( https://www.charlesproxy.com )查看POST數據的實際內容,這就是我所看到的。 我輸入的數據是1013Street Number (字段是streetNumber )和ST ANN(依賴於自動完成功能)的* Street Name **( streetName是此處的字段)。 這是我手動輸入網站所需要的,並且我從Charles收到了以下POST數據:

BEGIN=0&searchType=address_search&streetNumber=1013&streetName=ST+ANN&streetType=&streetDirection=&streetUnit=&Address+Search=Address+Search

最初,我只嘗試使用streetNumberstreetName ,因為那是我從網站進行測試時輸入的唯一數據,但這產生了一個錯誤。 現在,我為沒有輸入任何數據的數據輸入空字段,我猜想這可能是導致問題的原因,但我不確定。 以下是我用於代碼的內容,后面是我收到的錯誤消息(這是一條SQL錯誤消息,使我認為格式化數據有效負載的方式可能有問題)。

import requests

payload = {'searchType': 'address_search', 'streetNumber': '1013', \
'streetName': 'ST+ANN', 'streetType': '', 'streetDirection': '', \
'streetUnit': '', 'Address+Search': 'Address+Search' }

response = requests.post("http://qpublic9.qpublic.net/la_orleans_alsearch.php", \
data=payload)

print response.text

輸出和錯誤:

<LINK REL=stylesheet HREF="http://www.qpublic.net/la/neworleans/sytle.css" 
TYPE="text/css">
Could Not Read Data:You have an error in your SQL syntax; 
check the manual that corresponds to your MySQL server version for the
right syntax to use near ' 100' at line 1

由於我只是該站點的用戶,而不是該站點的開發人員,因此我無權查看其后端代碼的樣子,但是由於它可以在我的瀏覽器中從該站點工作,因此我猜想這與我的有效載荷格式,而不是其代碼。

關於我可能會缺少的任何建議嗎? 或有類似問題的經驗? 無論我刪除多少個空字段,我最終都會遇到相同的錯誤。

謝謝!

編輯:在我的代碼中,我沒有在python代碼中使用反斜杠,而是在這里使用它以方便閱讀。 同樣,錯誤消息中沒有換行符,同樣只是為了提高可讀性。 由於我不熟悉POST數據的結構,因此我保留了Charles的觀點,以防萬一更改某些內容可能導致通信錯誤。

編輯2:另外,我收到的響應碼為200( ),當我對此進行測試時,它似乎與HTTP上的連接似乎沒有錯誤,因此再次使我覺得我缺少POST數據。

取出單詞之間插入的所有+字符。 這是URL編碼的空間表示形式,但是requests模塊可以為您完成。 如果顯式使用它,它將重新編碼+ ,因此服務器腳本會將其視為文字+ ,而不是應解碼為的空間。

您還缺少payloadBEGIN=0參數。 在我的測試中,這似乎是導致您收到錯誤的原因。

payload = {'BEGIN': '0', 'searchType': 'address_search', 'streetNumber': '1013', \
            'streetName': 'ST ANN', 'streetType': '', 'streetDirection': '', 
            'streetUnit': '', 'Address Search': 'Address Search' }

如果您查看網頁源代碼,則這是隱藏的輸入之一:

<INPUT TYPE=HIDDEN NAME=BEGIN VALUE="0">
<INPUT TYPE=HIDDEN NAME="searchType" VALUE="address_search">

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM