Interview Questions

Java - Send HTTP Post Request

Use the following code to send Http Post request to any URL from Java.

class HttpPost
{
        public HttpURLConnection getHTTPConnection(String sendUrl)
        {
                URL url = null;
                HttpURLConnection urlConn = null;

                try
                {
                        url = new URL(sendUrl);
                        urlConn = (HttpURLConnection) url.openConnection();
                        urlConn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
                        urlConn.addRequestProperty("User-Agent", "TDD");
                        urlConn.setUseCaches(false);
                        urlConn.setReadTimeout(5000);
                        urlConn.setConnectTimeout(5000);
                        urlConn.setDoOutput(true);
                        urlConn.setDoInput(true);
                       
                }
                catch (MalformedURLException e)
                {
                        System.out.println("MalformedURLException -> " + e.getMessage());
                        e.printStackTrace();
                }
                catch (IOException e)
                {
                        System.out.println("IOException -> " + e.getMessage());
                        e.printStackTrace();
                }
                catch (Exception e)
                {
                        System.out.println("Exception -> " + e.getMessage());
                        e.printStackTrace();
                }

                return urlConn;
        }

        private void performHttpOperation(HttpURLConnection urlConn, String content)
        {
                try
                {
                        urlConn.setDoOutput(true);
                        OutputStreamWriter wr = new OutputStreamWriter(urlConn.getOutputStream());
                        wr.write(content);
                        wr.flush();
                        wr.close();
                       
                        int responseCode = urlConn.getResponseCode();
                        String responseMessage = urlConn.getResponseMessage();
                        String str = null;

                        if (responseCode == 200)
                        {
                                DataInputStream input = new DataInputStream(urlConn.getInputStream());
                                BufferedReader reader = new BufferedReader(new InputStreamReader(input));

                                String line;
                                while ((line = reader.readLine()) != null)
                                {
                                        System.out.println("  " + line);
                                }

                                input.close();
                        }

                        if (responseCode == 200)
                        {
                                System.out.println("HTTPCode -> " + responseCode);
                                System.out.println(" HTTPMessage -> " + responseMessage);
                        }
                        else
                        {
                                Map<String, List<String>> headerMap = urlConn.getHeaderFields();
                                Set<String> keys = headerMap.keySet();
                                for (String key : keys)
                                {
                                        System.out.println("header key -> " + key + " value -> " + headerMap.get(key));
                                }
                                DataInputStream input = new DataInputStream(urlConn.getErrorStream());
                                BufferedReader reader = new BufferedReader(new InputStreamReader(input));

                                String line;
                                while ((line = reader.readLine()) != null)
                                {
                                        System.out.println("  " + line);
                                }

                                input.close();
                                System.out.println("HTTPCode -> " + responseCode);
                                System.out.println(" HTTPMessage -> " + responseMessage);
                        }
                }
                catch (Exception e)
                {
                        System.out.println("Exception Message -> " + e.getMessage());
                        e.printStackTrace();
                }
        }

        public void sendHttpPostRequest()
        {
                try
                {
                        String content = URLEncoder.encode("<key>", "UTF-8") + "=" + URLEncoder.encode("<value>", "UTF-8") + "&"
                                        + URLEncoder.encode("<key1>", "UTF-8") + "=" + URLEncoder.encode("<value1>", "UTF-8");

                        String url = "http://techdive.in/";
                        HttpURLConnection urlConn = getHTTPConnection(url);
                        performHttpOperation(urlConn, content);
                }
                catch (Exception e)
                {
                        System.out.println("Exception Message -> " + e.getMessage());
                        e.printStackTrace();
                }
        }
}