-5

我希望我的代码将“请求 url”作为输入,并将输出作为“响应 XML”。这是我想用python来实现的。我不知道如何,因为我是 python 新手。虽然我知道如何在 Java 中做到这一点,并且为此我已经用 Java 开发了代码。因此,如果有人可以帮助我解决这个问题。

Java代码片段:

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.
    }
}
4

2 回答 2

1

还有一个名为requests的不错的包,它使您在 Python 中的 http 需求变得更加容易。

对于获取请求,您将执行以下操作:

r = requests.get('http://www.example.com')
print(r.text)
于 2013-04-17T10:07:13.977 回答
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

于 2013-04-17T09:55:16.657 回答