我无法将数据发送到网站并在Python中获得响应。我见过类似的问题,但似乎没有一个能达到我的目的。
这是我正在尝试移植到Python的C#代码:
static void Request(Uri selectedUri)
{
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(selectedUri);
request.ServicePoint.BindIPEndPointDelegate = BindIPEndPointCallback;
request.Method = "GET";
request.Timeout = (int)Timeout.TotalMilliseconds;
request.ReadWriteTimeout = (int)Timeout.TotalMilliseconds;
request.CachePolicy = CachePolicy;
request.UserAgent = UserAgent;
using (HttpWebResponse response = (HttpWebResponse)request.GetResponse())
{
using (StreamReader responseReader = new StreamReader(response.GetResponseStream()))
{
string responseText = responseReader.ReadToEnd();
File.WriteAllText(UrlFileName, responseText.Trim(), Encoding.ASCII);
}
}
}
这是我在Python中的尝试:
def request():
web = httplib.HTTPConnection('https://someurl.com');
headers = {"Content-type": "application/x-www-form-urlencoded", "Accept": "text/plain"}
web.request("GET", "/heartbeat.jsp", headers);
response = web.getresponse();
stream = ""; #something is wrong here
任何帮助将不胜感激!
答案 0 :(得分:142)
您可以使用urllib2
import urllib2
content = urllib2.urlopen(some_url).read()
print content
您也可以使用httplib
import httplib
conn = httplib.HTTPConnection("www.python.org")
conn.request("HEAD","/index.html")
res = conn.getresponse()
print res.status, res.reason
# Result:
200 OK
import requests
r = requests.get('https://api.github.com/user', auth=('user', 'pass'))
r.status_code
# Result:
200
答案 1 :(得分:7)
在Python中,您可以使用urllib2
(http://docs.python.org/2/library/urllib2.html)为您完成所有这些工作。
足够简单:
import urllib2
f = urllib2.urlopen(url)
print f.read()
将打印收到的HTTP响应。
要传递GET / POST参数,可以使用urllib.urlencode()
函数。有关详细信息,请参阅Official Urllib2 Tutorial