我尝试使用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数据。在
去掉单词之间的
+
字符。这是空间的URL编码表示,但是requests
模块为您做到了这一点。如果显式使用它,它将重新编码+
,因此服务器脚本将把它视为文本+
,而不是它应该解码到的空间。在您还缺少
BEGIN=0
中的BEGIN=0
参数。在我的测试中,这似乎是导致错误的原因。在如果您查看网页源代码,这是一个隐藏的输入:
^{pr2}$相关问题 更多 >
编程相关推荐