wood burning stoves 2.0*
The moose likes Web Services and the fly likes DELETE http request in HttpURLConnection.... Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login


Win a copy of Android Security Essentials Live Lessons this week in the Android forum!
JavaRanch » Java Forums » Java » Web Services
Bookmark "DELETE http request in HttpURLConnection...." Watch "DELETE http request in HttpURLConnection...." New topic
Author

DELETE http request in HttpURLConnection....

Vim Shir
Greenhorn

Joined: Jan 31, 2005
Posts: 9
Hi,

I have a client program in which i make a HTTPURLConnection to a RESTful web service. I am passing all XML data in the http request object. Everything seems to work fine for the HTTP POST/PUT method but not for the DELETE method.

-----------------ADD record via POST Request method ------------------

URL url = new URL(urlString);
HttpURLConnection connection = (HttpURLConnection)url.openConnection();
//set request method
connection.setRequestMethod("POST");
connection.setRequestProperty("Content-Type", "application/xml");
connection.setDoOutput(true);

//pass the xml data
PrintWriter writer = new PrintWriter(connection.getOutputStream());
writer.write(xmlData);
writer.flush();

When i execute the following code to delete a record, I am running into this exception...

Exception in thread "main" java.net.ProtocolException: HTTP method DELETE doesn't support output at sun.net.www.protocol.http.HttpURLConnection.getOutputStream(HttpURLConnection.java:851)

---------------Delete record via DELETE Request method ------------------

URL url = new URL(urlString);
HttpURLConnection connection = (HttpURLConnection)url.openConnection();
//set request method
connection.setRequestMethod("DELETE");
connection.setRequestProperty("Content-Type", "application/xml");
connection.setDoOutput(true);

//pass the xml data
PrintWriter writer = new PrintWriter(connection.getOutputStream);
writer.write(xmlData);
writer.flush();

I understand the exception it's throwing but how can i still pass the XML data in the request object for which i want to set the request method to be DELETE.

Any inputs or suggestions on this? Appreciate your response. Thanks!


Ulf Dittmer
Marshal

Joined: Mar 22, 2005
Posts: 41124
    
  45
What would that XML data be for? The resource is indicated by the URL, and the operation is to delete it. There's no need for further data.


Ping & DNS - my free Android networking tools app
Vim Shir
Greenhorn

Joined: Jan 31, 2005
Posts: 9
The xml data has details like which record (record's id, name, etc) to delete etc.,

This is what i am doing ....

In RESTful web service when i get the xml data in the http request object, i insert the data into a load table first & then call the stored proc to insert the data into the main table which updates the status flag in the load table as successful insert/update/delete/error etc., Then, i fetch the status flag info and send the response back to the client as record was inserted/updated/deleted.

Inserts and updates are working fine but not the delete part. Any further suggestions on this?

Thanks and appreciate your response.
Ulf Dittmer
Marshal

Joined: Mar 22, 2005
Posts: 41124
    
  45
That's not how HTTP DELETE -and by extension, a purely RESTful design- works. It sounds as if you'd be better off using a POST.
 
It is sorta covered in the JavaRanch Style Guide.
 
subject: DELETE http request in HttpURLConnection....
 
Similar Threads
writing to a http server using java
server error 500
XmlEncoder with Applet
core java communicates with servlet or jsp?
error 500