How to send PUT, DELETE HTTP request in HttpURLConnection?
To perform an HTTP PUT:
URL url = new URL("http://www.example.com/resource");HttpURLConnection httpCon = (HttpURLConnection) url.openConnection();httpCon.setDoOutput(true);httpCon.setRequestMethod("PUT");OutputStreamWriter out = new OutputStreamWriter( httpCon.getOutputStream());out.write("Resource content");out.close();httpCon.getInputStream();
To perform an HTTP DELETE:
URL url = new URL("http://www.example.com/resource");HttpURLConnection httpCon = (HttpURLConnection) url.openConnection();httpCon.setDoOutput(true);httpCon.setRequestProperty( "Content-Type", "application/x-www-form-urlencoded" );httpCon.setRequestMethod("DELETE");httpCon.connect();
This is how it worked for me:
HttpURLConnection connection = (HttpURLConnection) url.openConnection();connection.setRequestMethod("DELETE");int responseCode = connection.getResponseCode();
public HttpURLConnection getHttpConnection(String url, String type){ URL uri = null; HttpURLConnection con = null; try{ uri = new URL(url); con = (HttpURLConnection) uri.openConnection(); con.setRequestMethod(type); //type: POST, PUT, DELETE, GET con.setDoOutput(true); con.setDoInput(true); con.setConnectTimeout(60000); //60 secs con.setReadTimeout(60000); //60 secs con.setRequestProperty("Accept-Encoding", "Your Encoding"); con.setRequestProperty("Content-Type", "Your Encoding"); }catch(Exception e){ logger.info( "connection i/o failed" ); } return con;}
Then in your code :
public void yourmethod(String url, String type, String reqbody){ HttpURLConnection con = null; String result = null; try { con = conUtil.getHttpConnection( url , type); //you can add any request body here if you want to post if( reqbody != null){ con.setDoInput(true); con.setDoOutput(true); DataOutputStream out = new DataOutputStream(con.getOutputStream()); out.writeBytes(reqbody); out.flush(); out.close(); } con.connect(); BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream())); String temp = null; StringBuilder sb = new StringBuilder(); while((temp = in.readLine()) != null){ sb.append(temp).append(" "); } result = sb.toString(); in.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); logger.error(e.getMessage()); }//result is the response you get from the remote side}