Quiero saber si es posible enviar la solicitud PUT, DELETE (prácticamente) a través java.net.HttpURLConnection
de una URL basada en HTTP.
He leído tantos artículos que describen cómo enviar solicitudes GET, POST, TRACE, OPTIONS pero todavía no he encontrado ningún código de muestra que realice correctamente las solicitudes PUT y DELETE.
java
httpurlconnection
put
http-delete
Matriz
fuente
fuente
Respuestas:
Para realizar un PUT HTTP:
Para realizar un DELETE HTTP:
fuente
delete
. Cuando ejecuto este código tal como está aquí, realmente no sucede nada, la solicitud no se envía. La misma situación es cuando estoy haciendopost
solicitudes, pero allí puedo usar, por ejemplo, lohttpCon.getContent()
que desencadena la solicitud. Pero elhttpCon.connect()
no dispara nada en mi máquina :-)Así es como funcionó para mí:
fuente
Luego en tu código:
fuente
Estoy de acuerdo con @adietisheim y el resto de personas que sugieren HttpClient.
Pasé un tiempo tratando de hacer una simple llamada al servicio de descanso con HttpURLConnection y no me convenció y después de eso intenté con HttpClient y fue realmente más fácil, comprensible y agradable.
Un ejemplo de código para hacer una llamada put put es el siguiente:
fuente
HttpURLConnection
al trabajo, pero seguía funcionando en un error extraño, en concreto:cannot retry due to server authentication, in streaming mode
. Seguir tu consejo funcionó para mí. Me doy cuenta de que esto no responde exactamente la pregunta, que pide usarHttpURLConnection
, pero su respuesta me ayudó.UrlConnection es una API incómoda para trabajar. HttpClient es, con mucho, la mejor API y le ahorrará perder tiempo buscando cómo lograr ciertas cosas como esta pregunta de stackoverflow ilustra perfectamente. Escribo esto después de haber usado jdk HttpUrlConnection en varios clientes REST. Además, cuando se trata de características de escalabilidad (como agrupaciones de hilos, agrupaciones de conexiones, etc.) HttpClient es superior
fuente
Para hacer un PUT en HTML correctamente, deberá rodearlo con try / catch:
fuente
Incluso la plantilla de descanso puede ser una opción:
fuente
hay una manera simple de eliminar y poner solicitud, simplemente puede hacerlo agregando un "
_method
" parámetro a su solicitud de publicación y escribir "PUT
" o "DELETE
" por su valor.fuente
Recomendaría Apache HTTPClient.
fuente