wake-up-neo.net

Wie mache ich ein HTTP GET in Java?

Wie mache ich ein HTTP GET in Java?

135
David

Wenn Sie eine Webseite streamen möchten, können Sie die folgende Methode verwenden.

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

Technisch könnte man es mit einem Straight TCP Socket machen. Ich würde es jedoch nicht empfehlen. Ich würde dringend empfehlen, stattdessen Apache HttpClient zu verwenden. In seinem einfachste 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();

und hier ist ein mehr vollständiges Beispiel .

55
cletus

Wenn Sie keine externen Bibliotheken verwenden möchten, können Sie URL- und URLConnection-Klassen aus der Standard-API Java API verwenden.

Ein Beispiel sieht so aus:

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
35
HyLian

Die einfachste Möglichkeit, die keine Bibliotheken von Drittanbietern erfordert, besteht darin, ein [~ # ~] url [~ # ~] -Objekt zu erstellen und dann eines von beiden aufzurufen openConnection oder openStream drauf. Beachten Sie, dass dies eine ziemlich einfache API ist, sodass Sie nicht viel Kontrolle über die Header haben.

7