如何在Java中进行HTTP GET?

如何在Java中进行HTTP GET?

如果你想stream式传输任何网页,你可以使用下面的方法。

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"); BufferedReader rd = new BufferedReader(new InputStreamReader(conn.getInputStream())); String line; while ((line = rd.readLine()) != null) { result.append(line); } rd.close(); return result.toString(); } public static void main(String[] args) throws Exception { System.out.println(getHTML(args[0])); } } 

技术上你可以用一个直的TCP套接字来完成。 我不会推荐它。 我强烈build议你改用Apache HttpClient 。 最简单的forms是 :

 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(); 

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

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

一个例子是这样的:

 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 

最简单的方法是不需要第三方库创build一个URL对象,然后调用openConnection或openStream就可以了。 请注意,这是一个非常基本的API,所以你不会对头部有很多的控制权。