如何在 Java 中执行 HTTPGET?

如何在 Java 中执行 HTTPGET?

436785 次浏览

从技术上讲,您可以使用一个直接的 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();

这里是一个更多的 完整的例子

如果你想流任何网页,你可以使用下面的方法。

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]));
}
}

最简单的方法是不需要第三方库来创建 网址对象,然后对其调用 OpenConnectionOpenStream。请注意,这是一个非常基本的 API,因此您不会对头部有太多的控制。

如果不想使用外部库,可以使用标准 JavaAPI 中的 URL 和 URLConnection 类。

下面是一个例子:

String urlString = "http://wherever.com/someAction?param1=value1&param2=value2....";
URL url = new URL(urlString);
URLConnection conn = url.openConnection();
InputStream is = conn.getInputStream();
// Do what you want with that stream