java HttpClientErrorException$禁止:403:Rest模板Spring Jersey
我需要将httppost转换为rest模板。它工作得很好,但我也必须按照要求迁移这部分代码。我们必须将httppost代码迁移到rest模板。我在这里附加了旧的工作代码和尝试的rest模板代码以及错误日志
JSON和URL的模拟格式。不是真的
字符串jsonstr=JSON {“业务单元”:“ABC”、“时区”:“美国/芝加哥”、“最新更新用户”:“abc123”、“时钟”:“25”、“地区”:“MW”}
字符串postrl=URL https://corners.test.ttm.com/eamresource/goalClock/8708
旧的工作代码:
public String httpPostData(String jsonstr, String posturl) throws IOException {
String result = "";
HttpPost httpPost = new HttpPost(posturl);
httpPost.setEntity(new StringEntity(jsonstr, ContentType.APPLICATION_JSON));
httpPost.addHeader("Content-Type", "application/json");
httpPost.addHeader("Authorization", authString);
System.out.println("JSON to send: " + jsonstr);
logger.info("JSON to send: " + jsonstr);
try (CloseableHttpClient closeableHttpClient = HttpClients.createDefault();
CloseableHttpResponse closeableHttpResponse = closeableHttpClient.execute(httpPost);) {
logger.info("response status code :" + closeableHttpResponse.getStatusLine().getStatusCode());
logger.info("response status line :" + closeableHttpResponse.getStatusLine());
result = EntityUtils.toString(closeableHttpResponse.getEntity());
logger.info("response data :" + result);
return result;
}
}
REST模板
public String httpPostData(String jsonstr, String posturl) throws IOException {
CloseableHttpClient httpClient = HttpClients.custom()
.setSSLHostnameVerifier(new NoopHostnameVerifier())
.build();
HttpComponentsClientHttpRequestFactory requestFactory = new HttpComponentsClientHttpRequestFactory();
requestFactory.setHttpClient(httpClient);
RestTemplate restTemplate = new RestTemplate();
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_JSON);
headers..addHeader("Authorization", authString);
headers.add("user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.99 Safari/537.36");
HttpEntity<String> entity = new HttpEntity<String>(jsonstr,headers);
String result = restTemplate.postForObject(posturl, entity, String.class);
return result;
}
错误日志
org.springframework.web.client.HttpClientErrorException$Forbidden: 403 : [{"status":"failure","resourceID":"8708","errorCode":"eam013","errorMessage":"Resource Already Exists"}]
at org.springframework.web.client.HttpClientErrorException.create(HttpClientErrorException.java:109)
at org.springframework.web.client.DefaultResponseErrorHandler.handleError(DefaultResponseErrorHandler.java:170)
at org.springframework.web.client.DefaultResponseErrorHandler.handleError(DefaultResponseErrorHandler.java:112)
at org.springframework.web.client.ResponseErrorHandler.handleError(ResponseErrorHandler.java:63)
at org.springframework.web.client.RestTemplate.handleResponse(RestTemplate.java:785)
at org.springframework.web.client.RestTemplate.doExecute(RestTemplate.java:743)
at org.springframework.web.client.RestTemplate.execute(RestTemplate.java:677)
at org.springframework.web.client.RestTemplate.postForObject(RestTemplate.java:421)
at com.att.dmp.genericRestClient.GenericRestClientImpl.httpPostData(GenericRestClientImpl.java:47)
at com.att.dmp.service.httpclient.impl.ClockProcessServiceImpl.lambda$2(ClockProcessServiceImpl.java:100)
at java.util.concurrent.CompletableFuture$AsyncSupply.run(CompletableFuture.java:1604)
at java.util.concurrent.CompletableFuture$AsyncSupply.exec(CompletableFuture.java:1596)
at java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:289)
at java.util.concurrent.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1067)
at java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1703)
at java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:172)
共 (0) 个答案