78

Web サイトにデータを送信して、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

どんな助けでも大歓迎です!

4

2 に答える 2

160

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
于 2013-06-18T21:28:02.517 に答える
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()関数を使用できます。詳細については、公式の Urllib2 チュートリアルを参照してください。

于 2013-06-18T20:55:52.223 に答える