如何找到发出POST请求所需的参数和标题?

时间:2013-09-18 08:51:21

标签: python linux api post csv

专家,

我正在使用Python2.7开发Linux系统。我有一个与API交互的URL,在浏览器中,比如Firefox,它返回一个CSV文件。

由于重定向(POST方法),我在使用python脚本访问url时遇到了麻烦。

现在,我已经在论坛上找到了线程,演示了如何发出POST请求。我的问题是;如何找到我应该随请求发送的标题和参数?

说,我想做一些类似于这个脚本的事情:

import httplib, urllib
params = urllib.urlencode({'@number': 12524, '@type': 'issue', '@action': 'show'})
headers = {"Content-type": "application/x-www-form-urlencoded", "Accept": "text/plain"}
conn = httplib.HTTPConnection("bugs.python.org")
conn.request("POST", "", params, headers)
response = conn.getresponse()
conn.close()

我会在请求中使用哪些 parms 标题

以下是我尝试使用简单的wget命令访问url时收到的http响应:

<html>
   <head>
       <title>HP Business Service Management</title>
    <script>
        function redirect() {
            document.getElementById("directAccessForm").submit();
        }
    </script>

   </head>

   <body onload="redirect();" >

       <form ID="directAccessForm" action="rfw/directAccess.csv" target="dialogFrame" metho
d="post" >

                    <input type="hidden" name="userName" id="userName" value="encrypt"/>


       </form>

       <iframe name="dialogFrame" id="dialogFrame" width="100%" height="100%" SCROLLING="no
" FRAMEBORDER="0" src="/topaz/static/act/blank.html" >
       </iframe>
    </body>
</html>

我是否需要任何其他信息来确定我正在寻找的参数?

1 个答案:

答案 0 :(得分:0)

网站返回正确的文件,因为有javascript的重定向。

您可以通过从表单访问网址来下载该文件(操作属性为<form>):

<url of the website with form>/rfw/directAccess.csv

如果您想要访问具有不同操作值属性的其他表单,您需要获取该值,例如用正则表达式。