How do you send an HTTP Get Web Request in Python?

LeC*_*One 69 python http webrequest streamreader

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

这是我在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
Run Code Online (Sandbox Code Playgroud)

任何帮助,将不胜感激!

Vic*_*res 149

你可以使用urllib2

import urllib2
content = urllib2.urlopen(some_url).read()
print content
Run Code Online (Sandbox Code Playgroud)

您也可以使用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
Run Code Online (Sandbox Code Playgroud)

请求库

import requests
r = requests.get('https://api.github.com/user', auth=('user', 'pass'))
r.status_code
# Result:
200
Run Code Online (Sandbox Code Playgroud)

  • httplib模块已在Python 3.0中重命名为http.client (5认同)
  • 在 Python 3 中,将“urllib2”替换为“urllib.request”。 (3认同)

Sam*_*Sam 7

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

够了:

import urllib2
f =  urllib2.urlopen(url)
print f.read() 
Run Code Online (Sandbox Code Playgroud)

将打印收到的HTTP响应.

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