如何在 Java 中执行 HTTP GET?
David
问问题
415141 次
4 回答
232
如果要流式传输任何网页,可以使用以下方法。
import java.io.*;
import java.net.*;
public class c {
public static String getHTML(String urlToRead) throws Exception {
StringBuilder result = new StringBuilder();
URL url = new URL(urlToRead);
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setRequestMethod("GET");
try (BufferedReader reader = new BufferedReader(
new InputStreamReader(conn.getInputStream()))) {
for (String line; (line = reader.readLine()) != null; ) {
result.append(line);
}
}
return result.toString();
}
public static void main(String[] args) throws Exception
{
System.out.println(getHTML(args[0]));
}
}
于 2009-09-28T06:46:47.227 回答
59
从技术上讲,您可以使用直接的 TCP 套接字来做到这一点。不过我不会推荐它。我强烈建议您改用Apache HttpClient。以最简单的形式:
GetMethod get = new GetMethod("http://httpcomponents.apache.org");
// execute method and handle any error responses.
...
InputStream in = get.getResponseBodyAsStream();
// Process the data from the input stream.
get.releaseConnection();
这是一个更完整的例子。
于 2009-09-28T06:40:45.380 回答
41
如果您不想使用外部库,可以使用标准 Java API 中的 URL 和 URLConnection 类。
一个示例如下所示:
String urlString = "http://wherever.com/someAction?param1=value1¶m2=value2....";
URL url = new URL(urlString);
URLConnection conn = url.openConnection();
InputStream is = conn.getInputStream();
// Do what you want with that stream
于 2009-09-28T06:48:40.340 回答
9
不需要第三方库的最简单方法是创建一个URL对象,然后在其上调用openConnection或openStream。请注意,这是一个非常基本的 API,因此您不会对标头进行太多控制。
于 2009-09-28T06:47:01.593 回答