Skip to main content
 首页 » 编程设计

python之HTTPS POST 请求 Python,返回 .csv

2025年05月04日7qq号

我想向 HTTPS 站点发出发布请求,该站点应使用 .csv 文件进行响应。我有这个 Python 代码:

try: 
    #conn = httplib.HTTPSConnection(host="www.site.com", port=443) 

=> 给出 BadStatusLine: ' ' 错误

    conn = httplib.HTTPConnection("www.site.com"); 
    params  = urllib.urlencode({'val1':'123','val2':'abc','val3':'1b3'}) 
    conn.request("POST", "/nps/servlet/exportdatadownload", params) 
    content = conn.getresponse() 
    print content.reason, content.status 
    print content.read() 
    conn.close() 
except: 
    import sys 
    print sys.exc_info()[:2] 

输出:

Found 302 
 
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN"> 
<HTML><HEAD> 
<TITLE>302 Found</TITLE> 
</HEAD><BODY> 
<H1>Found</H1> 
The document has moved <A HREF="https://www.site.com/nps/servlet/exportdatadownload">here</A>.<P> 
<HR> 
<ADDRESS>Oracle-Application-Server-10g/10.1.3.5.0 Oracle-HTTP-Server Server at mp-www1.mrco.be Port 7778</ADDRESS> 
</BODY></HTML> 

我做错了什么?如何“捕获”返回的 .csv 文件? 我尝试使用 Chrome Extentions 的 POST 请求(Advanced Rest Client,它正在运行......)

请您参考如下方法:

带有 302 错误的 HTML 输出是因为您使用 HTTP 而不是 HTTPS 连接到站点,这在您的代码中:

conn = httplib.HTTPConnection("www.site.com"); 

您这样做可能是因为您的代码的注释部分存在其他错误。

如果我尝试这样做,我会使用 Requests , 非常清楚 documentation .使用请求,代码将类似于:

import requests 
 
url = "https://www.example.com/nps/servlet/exportdatadownload" 
payload = { "val1": "123", "val2": "abc", "val3": "1b3" } 
r = requests.post(url, data=payload, verify=True) 

CSV文件应该在r.content中,可以写入文件。