你如何在Python中发送HTTP Get Web Request?

我无法将数据发送到网站并在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); } } } 

在上面的代码中,build立了一个Http请求,将响应stream中发现的所有内容都发送给在UrlFileName中find的url。

这里是我尝试在Python中重新创build它:

 def request(): web = httplib.HTTPConnection('https://minecraft.net'); 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 

我不知道是否我甚至创build了一个请求,更不用说创build响应的stream读取器来发送数据。 任何帮助,将不胜感激! 请详细说明,因为我对Python语法很陌生。

你可以使用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 200 OK 

或请求库

 >>> import requests >>> r = requests.get('https://api.github.com/user', auth=('user', 'pass')) >>> r.status_code 200 

在Python中,您可以使用urllib2http://docs.python.org/2/library/urllib2.html )来完成所有这些工作。

简单地说:

 >> import urllib2 >>> f = urllib2.urlopen(url) >>> print f.read() 

将打印收到的HTTP响应。

要传递GET / POST参数,可以使用urllib.urlencode()函数。 有关更多信息,请参阅官方的Urllib2教程