Estou desenvolvendo um Web Services em Rest no qual deverá receber e retornar um Json. Criei um projeto WEB para consumir esse serviço, porém quando tento consumir, sempre me aparece o erro 405 (método não permitido). Se eu faço um teste chamando meu serviço pelo navegador, ele traz o resultado sem problemas.
Método que consome o serviço
public void importarCusto(Cotacao cotacao) throws MalformedURLException, SQLException {
HttpURLConnection connection = null;
String jsonRetorno;
String jsonSaida;
CustoFornecedor custo = new CustoFornecedor("96096", 15.00);
try {
URL url = new URL(URL_WEBSERVICE);
connection = (HttpURLConnection) url.openConnection();
connection.setDoOutput(true);
connection.setDoInput(true);
connection.setConnectTimeout(15000);
connection.setReadTimeout(15000);
connection.setRequestMethod("GET");
connection.setRequestProperty("Content-Type", "application/json");
jsonSaida = new Gson().toJson(custo);
System.out.println("Json de saida " + jsonSaida);
OutputStreamWriter out = new OutputStreamWriter(connection.getOutputStream());
out.write(jsonSaida);
out.close();
// connection.connect();
System.out.println("Vou começar a processar o retorno");
//retornando os dados do WS
InputStream content = connection.getInputStream();
System.out.println("Valor do content " + content.read());
jsonRetorno = IOUtils.toString(content);
List<CustoFornecedor> listaItensEntrada = new Gson().fromJson(jsonRetorno, ArrayList.class);
int registrosAfetados = new CotacaoDAO().atualizaCusto(listaItensEntrada, dadosUsuario, cotacao);
System.out.println("Quantidade de registros alterados " + registrosAfetados);
} catch (IOException e) {
e.printStackTrace();
throw new RuntimeException(e);
} finally {
connection.disconnect();
}
}
Método do serviço
@Path("cotacao")
public class CotacaoResource {
@Path("custo/recupera")
@GET
@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.APPLICATION_JSON)
public String lista(String listaCotacaoItens) {
System.out.println("O Web Service foi chamado.");
System.out.println("O Json recebido é " + listaCotacaoItens);
List<CotacaoItens> cotacaoItens = new ConexaoSAP().recuperaItensComCustoCotacao(listaCotacaoItens);
System.out.println("Tamanho da lista de itens da cotação " + cotacaoItens.size());
String json = new Gson().toJson(cotacaoItens);
System.out.println("A string de retorno JSON é " + json);
return json;
}
}