Ola, tenho uma duvida quanto ao funcionamento do rest, na minha classe de consumo de api tenho somente 2 metodos chamados sendGet(url) e sendPost(url,json,METODO);
quando preciso fazer um get uso o sendGet e informo a url… até ai blz…
quando preciso fazer um post uso o sendPost e informo: url,json e “POST”;
percebi que o put também funciona nesse sendPost somente mudando o ultimo parametro para “PUT”.
porém o “DELETE” nao funciona no sendPost. Gostaria de saber se o metodo DELETE é obrigatório ser void, ou ele pode retornar algo igual ao post e put… Ou se tem algo de errado com meus métodos…
Segue abaixo o DELETE no WebService que criei com intuito de testar…
@DELETE
@Path("Usuario/excluir/{login}")
public Response excluir(@PathParam("login") String login) {
return Response.ok().entity("soh teste").build();
}
Abaixo meus metodos sendGet e sendPost
private String sendGet(String url_) {
StringBuilder resposta = new StringBuilder();
try {
URL url = new URL(url_);
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setRequestMethod("GET");
connection.setConnectTimeout(5000);
connection.connect();
BufferedReader in = new BufferedReader(new InputStreamReader(url.openStream()));
String inputLine;
while ((inputLine = in.readLine()) != null) {
resposta.append(inputLine);
}
in.close();
} catch (MalformedURLException e) {
e.printStackTrace();
return null;
} catch (IOException e) {
e.printStackTrace();
return null;
}
return resposta.toString();
}
public String sendPost(String url, String json, String metodo) {
try {
// Cria um objeto HttpURLConnection:
HttpURLConnection request = (HttpURLConnection) new URL(url).openConnection();
try {
// Define que a conexão pode enviar informações e obtê-las de volta:
request.setDoOutput(true);
request.setDoInput(true);
// Define o content-type:
request.setRequestProperty("Content-Type", "application/json");
// Define o tempo máximo
request.setConnectTimeout(4000);
// Define o método da requisição:
request.setRequestMethod(metodo);
// Conecta na URL:
request.connect();
// Escreve o objeto JSON usando o OutputStream da requisição:
try (OutputStream outputStream = request.getOutputStream()) {
outputStream.write(json.getBytes("UTF-8"));
}
// Caso você queira usar o código HTTP para fazer alguma coisa, descomente esta linha.
//int response = request.getResponseCode();
return readResponse(request);
} finally {
request.disconnect();
}
} catch (IOException ex) {
System.err.println(ex);
return null;
}
}
private String readResponse(HttpURLConnection request) throws IOException {
ByteArrayOutputStream os;
try (InputStream is = request.getInputStream()) {
os = new ByteArrayOutputStream();
int b;
while ((b = is.read()) != -1) {
os.write(b);
}
}
return new String(os.toByteArray());
}