Consumir WEB Services Rest

2 respostas Resolvido
javarest
I

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;
	}
}

2 Respostas

Lucas_Camara
Solucao aceita

Experimente utilizar um cliente para REST, como o Apache HttpClient: exemplos

I

Obrigado Lucas,

Consegui utilizando o HttpClient.

Criado 5 de julho de 2016
Ultima resposta 5 de jul. de 2016
Respostas 2
Participantes 2