How to send PUT, DELETE HTTP request in HttpURLConnection in JAVA

前端 未结 3 1134
[愿得一人]
[愿得一人] 2020-12-30 09:25

I have Restful WebServices, and i send POST and GET HTTP request, how to send PUT and DELTE request HTTP in httpURLConection with JAVA.

相关标签:
3条回答
  • 2020-12-30 10:12

    PUT

    URL url = null;
    try {
       url = new URL("http://localhost:8080/putservice");
    } catch (MalformedURLException exception) {
        exception.printStackTrace();
    }
    HttpURLConnection httpURLConnection = null;
    DataOutputStream dataOutputStream = null;
    try {
        httpURLConnection = (HttpURLConnection) url.openConnection();
        httpURLConnection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
        httpURLConnection.setRequestMethod("PUT");
        httpURLConnection.setDoInput(true);
        httpURLConnection.setDoOutput(true);
        dataOutputStream = new DataOutputStream(httpURLConnection.getOutputStream());
        dataOutputStream.write("hello");
    } catch (IOException exception) {
        exception.printStackTrace();
    }  finally {
        if (dataOutputStream != null) {
            try {
                dataOutputStream.flush();
                dataOutputStream.close();
            } catch (IOException exception) {
                exception.printStackTrace();
            }
        }
        if (httpsURLConnection != null) {
            httpsURLConnection.disconnect();
        }
    }
    

    DELETE

    URL url = null;
    try {
        url = new URL("http://localhost:8080/deleteservice");
    } catch (MalformedURLException exception) {
        exception.printStackTrace();
    }
    HttpURLConnection httpURLConnection = null;
    try {
        httpURLConnection = (HttpURLConnection) url.openConnection();
        httpURLConnection.setRequestProperty("Content-Type",
                    "application/x-www-form-urlencoded");
        httpURLConnection.setRequestMethod("DELETE");
        System.out.println(httpURLConnection.getResponseCode());
    } catch (IOException exception) {
        exception.printStackTrace();
    } finally {         
        if (httpURLConnection != null) {
            httpURLConnection.disconnect();
        }
    } 
    
    0 讨论(0)
  • 2020-12-30 10:12

    If I use the DELETE request from @BartekM, it get this exception:

     java.net.ProtocolException: DELETE does not support writing
    

    To fix it, I just remove this instruction:

     // httpURLConnection.setDoOutput(true);
    

    source: Sending HTTP DELETE request in Android

    0 讨论(0)
  • 2020-12-30 10:12

    you can override

    protected void doPut(HttpServletRequest req,
                          HttpServletResponse resp) throws ServletException, IOException;
    

    Performs the HTTP PUT operation; the default implementation reports an HTTP BAD_REQUEST error. The PUT operation is analogous to sending a file via FTP. Servlet writers who override this method must respect any Content-* headers sent with the request. (These headers include content-length, content-type, content-transfer-encoding, content-encoding, content-base, content-language, content-location, content-MD5, and content-range.) If the subclass cannot honor a content header, then it must issue an error response (501) and discard the request. For more information, see the HTTP 1.1 RFC.

    This method does not need to be either "safe" or "idempotent". Operations requested through PUT can have side effects for which the user can be held accountable. Although not required, servlet writers who override this method may wish to save a copy of the affected URI in temporary storage.

    and

     protected void doDelete(HttpServletRequest req,
                             HttpServletResponse resp) throws ServletException, IOException
    

    Performs the HTTP DELETE operation; the default implementation reports an HTTP BAD_REQUEST error. The DELETE operation allows a client to request a URI to be removed from the server. This method does not need to be either "safe" or "idempotent". Operations requested through DELETE can have side-effects for which users may be held accountable. Although not required, servlet writers who subclass this method may wish to save a copy of the affected URI in temporary storage.

    0 讨论(0)
提交回复
热议问题