How to send HTTP request in java? [duplicate] How to send HTTP request in java? [duplicate] java java

How to send HTTP request in java? [duplicate]


You can use java.net.HttpUrlConnection.

Example (from here), with improvements. Included in case of link rot:

public static String executePost(String targetURL, String urlParameters) {  HttpURLConnection connection = null;  try {    //Create connection    URL url = new URL(targetURL);    connection = (HttpURLConnection) url.openConnection();    connection.setRequestMethod("POST");    connection.setRequestProperty("Content-Type",         "application/x-www-form-urlencoded");    connection.setRequestProperty("Content-Length",         Integer.toString(urlParameters.getBytes().length));    connection.setRequestProperty("Content-Language", "en-US");      connection.setUseCaches(false);    connection.setDoOutput(true);    //Send request    DataOutputStream wr = new DataOutputStream (        connection.getOutputStream());    wr.writeBytes(urlParameters);    wr.close();    //Get Response      InputStream is = connection.getInputStream();    BufferedReader rd = new BufferedReader(new InputStreamReader(is));    StringBuilder response = new StringBuilder(); // or StringBuffer if Java version 5+    String line;    while ((line = rd.readLine()) != null) {      response.append(line);      response.append('\r');    }    rd.close();    return response.toString();  } catch (Exception e) {    e.printStackTrace();    return null;  } finally {    if (connection != null) {      connection.disconnect();    }  }}


From Oracle's java tutorial

import java.net.*;import java.io.*;public class URLConnectionReader {    public static void main(String[] args) throws Exception {        URL yahoo = new URL("http://www.yahoo.com/");        URLConnection yc = yahoo.openConnection();        BufferedReader in = new BufferedReader(                                new InputStreamReader(                                yc.getInputStream()));        String inputLine;        while ((inputLine = in.readLine()) != null)             System.out.println(inputLine);        in.close();    }}


I know others will recommend Apache's http-client, but it adds complexity (i.e., more things that can go wrong) that is rarely warranted. For a simple task, java.net.URL will do.

URL url = new URL("http://www.y.com/url");InputStream is = url.openStream();try {  /* Now read the retrieved document from the stream. */  ...} finally {  is.close();}