How do I do a HTTP GET in Java? [duplicate]

2019-01-01 10:19发布

问题:

This question already has an answer here:

  • How to use java.net.URLConnection to fire and handle HTTP requests 11 answers

How do I do a HTTP GET in Java?

回答1:

If you want to stream any webpage, you can use the method below.

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


回答2:

Technically you could do it with a straight TCP socket. I wouldn\'t recommend it however. I would highly recommend you use Apache HttpClient instead. In its simplest form:

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

and here is a more complete example.



回答3:

If you dont want to use external libraries, you can use URL and URLConnection classes from standard Java API.

An example looks like this:

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


回答4:

The simplest way that doesn\'t require third party libraries it to create a URL object and then call either openConnection or openStream on it. Note that this is a pretty basic API, so you won\'t have a lot of control over the headers.