Python:请求中的POST数据问题

2024-09-30 22:23:17 发布

您现在位置:Python中文网/ 问答频道 /正文

我尝试使用python2.7中的请求2.9.1来学习如何发送POST数据。然而,我觉得我在提供给请求的数据中遗漏了一些东西,或者某种形式的错误,并且整晚都在敲我的头。在

我基于表单数据的站点是:http://qpublic9.qpublic.net/la_orleans_address.php

我使用Charles(https://www.charlesproxy.com)来查看POST数据的实际内容,下面是我看到的内容。我输入的数据是1013(字段是街道编号)和*Street Name**(街道名称是这里的字段)的ST ANN(依赖于自动完成)。这是我需要手动进入网站的全部内容,我从查尔斯那里收到了以下帖子数据:

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

最初我只尝试使用街道号街道名,因为这是我在网站上测试时输入的唯一数据,但这产生了一个错误。现在我为没有输入任何内容的数据输入空字段,我猜这可能是导致问题的原因,但我不确定。下面是我在代码中使用的代码,后面是我收到的错误消息(这是一条SQL错误消息,使我认为我格式化数据负载的方式可能有问题)。在

^{pr2}$

输出和错误:

<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数据。在


Tags: 数据代码http消息内容net网站address
1条回答
网友
1楼 · 发布于 2024-09-30 22:23:17

去掉单词之间的+字符。这是空间的URL编码表示,但是requests模块为您做到了这一点。如果显式使用它,它将重新编码+,因此服务器脚本将把它视为文本+,而不是它应该解码到的空间。在

您还缺少BEGIN=0中的BEGIN=0参数。在我的测试中,这似乎是导致错误的原因。在

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

如果您查看网页源代码,这是一个隐藏的输入:

^{pr2}$

相关问题 更多 >