提问人:Emmanuel Thadeu Souza Trindade 提问时间:11/10/2023 最后编辑:BalusCEmmanuel Thadeu Souza Trindade 更新时间:11/11/2023 访问量:38
带有代理的 Apache HttClient 在 Tomcat 中不起作用
Apache HttClient with Proxy not working in the Tomcat
问:
我有一个使用 Jsf 和 Apache HttpClient 制作的 Web 应用程序。当尝试使用需要代理进行通信的 API 时,如果我通过服务器上的命令行运行代码,它可以工作,但是如果我通过 Tomcat 通过 Web 应用程序运行相同的代码,我会收到“名称或服务未知”错误。
Java versão 11 Apache HttpClient 4.5.14
private String getCpf(String tokenClient) throws IOException {
String result = null;
try {
System.out.println("Inicio do processamento.....");
System.out.println("Token informado: " + tokenClient);
ObjectMapper objectMapper = new ObjectMapper();
System.out.println("Configurando o proxy...");
HttpHost proxy = new HttpHost("111.111.111.111", 8080);
DefaultProxyRoutePlanner routePlanner = new DefaultProxyRoutePlanner(proxy);
//HttpClient httpClient = HttpClients.custom().setRoutePlanner(routePlanner).build();
HttpClient httpClient = HttpClients.createDefault();
HttpGet httpGet = new HttpGet(
"https://servidor.com.br/api-servidor/api/login/validatoken");
httpGet.addHeader("Authorization", "Bearer " + tokenClient.replace("\"", ""));
httpGet.addHeader("accept", "application/json");
System.out.println("Antes do envio....");
HttpResponse response = httpClient.execute(httpGet);
System.out.println("Apos o envio....");
System.out.println("Coletando o retorno....");
HttpEntity entity = response.getEntity();
System.out.println("Código do retorno: " + response.getStatusLine().getStatusCode());
if (entity != null && response.getStatusLine().getStatusCode() == 200) {
System.out.println("Retorno em string: " + EntityUtils.toString(entity));
result = EntityUtils.toString(entity);
System.out.println("Convertendo o retorno em json....");
JsonNode jsonNode = objectMapper.readTree(result);
result = jsonNode.get("cpfcnpj").asText();
System.out.println("Cpf retornado: " + result);
}
} catch (IOException e) {
System.out.println("Erro: " + e.getMessage());
return result;
}
System.out.println("Fim da execução....");
return result;
}
我已经尝试通过环境变量和 Tomcat 的 setenv.xml 设置代理,但它只有在我在 Tomcat 之外运行它时才有效。
答: 暂无答案
评论