如何在Python中执行HTTP GET操作?

时间:2013-04-17 09:52:45

标签: python

我希望我的代码将“Request url”作为输入,并将输出作为“Response XML”。这个我想用python实现。我不知道自从我是蟒蛇新手以来。虽然我知道如何在Java中实现这一点,但为此我已经用Java开发了代码。所以如果有人可以帮我这个。

Java code snippet:

import java.net.*;    // import java packages.  
import java.io.*;
import java.net.URL;

public class API {
    public static void main(String[] args) throws Exception {
URL API = new URL("http:server//"); // Create a URL object 'API' that will locate the resources on remote server via HTTP protocol.
        URLConnection request = API.openConnection(); // Retrieve a URLConnection object 'request' that will establish http connection by using openConnection() method.
        BufferedReader in = new BufferedReader(new InputStreamReader(
                                    request.getInputStream())); // Create an Output stream ‘in’ that will call InputStreamReader to read the contents of the resources.
        String response;
        while ((response = in.readLine()) != null) // Write to Output stream until null.
            System.out.println(response); // prints the response on Console.
        in.close(); // Close Output stream.
    }
}

2 个答案:

答案 0 :(得分:1)

from socket import *
s = socket()
s.connect(('example.com', 80))
s.send('GET / HTTP/1.1\r\n\r\n')
print s.recv(8192)

或者:http://docs.python.org/2/library/urllib2.html

import urllib2
f = urllib2.urlopen('http://www.python.org/')
print f.read(100)



第一个选项可能需要更多标题项,例如:

from socket import *
s = socket()
s.connect(('example.com', 80))
s.send('GET / HTTP/1.1\r\nHost: example.com\r\nUser-Agent: MyScript\r\n\r\n')
print s.recv(8192)

此外,我倾向于倾向于的第一个解决方案(因为,你做你想做的事而不做其他事情)要求你对HTTP协议有基本的了解。

例如,这就是HTTP协议对GET请求的工作方式:

GET <url> HTTP/1.1<cr+lf>
<header-key>: <value><cr+lf>
<cr+lf>

此处有更多内容,例如:http://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol#Client_request

答案 1 :(得分:1)

还有一个名为requests的好软件包,可以让您在Python中的http需求变得更加容易。

对于获取请求,您可以这样做:

r = requests.get('http://www.example.com')
print(r.text)