我正在使用Java Spring Resttemplate访问Acumatica API。对Login端点的POST调用工作正常。但是下一次获取StockItems的调用将得到一个401 Unauthorized error
。
org.springframework.web.client.HttpClientErrorException: 401 Unauthorized at org.springframework.web.client.DefaultResponseErrorHandler.handleError(DefaultResponseErrorHandler.java:91) at org.springframework.web.client.RestTemplate.handleResponseError(RestTemplate.java:615) at org.springframework.web.client.RestTemplate.doExecute(RestTemplate.java:573) at org.springframework.web.client.RestTemplate.execute(RestTemplate.java:544) at org.springframework.web.client.RestTemplate.exchange(RestTemplate.java:465) at
现在,当我使用Postman和Chrome Restlet客户端时,此方法工作正常。我注意到,在Restlet客户端中,对API的GET调用传递了由API在登录调用中设置的会话cookie。我尝试从GET请求中的登录调用传递响应标头。但是我仍然得到401。我正在使用标准的resttemplate配置。
HttpEntity<Credentials> entity = new HttpEntity<Credentials>(credentials, headers);
ResponseEntity<String> response = restTemplate.exchange("https://xxxx.acumatica.com/entity/auth/login",
HttpMethod.POST, entity, String.class);
HttpHeaders rHeaders = response.getHeaders();
String set_cookie = rHeaders.getFirst(rHeaders.SET_COOKIE);
if (LOG.isInfoEnabled()) { LOG.info("Response: " + response.toString()); }
if (LOG.isInfoEnabled()) { LOG.info("Set-Cookie: " + set_cookie); }
HttpEntity<String> entity2 = new HttpEntity<String>(response.getHeaders());
ResponseEntity<String> response2 = restTemplate.exchange("https://usell.acumatica.com/entity/Default/6.00.001/StockItem?$expand=Attributes,WarehouseDetails", HttpMethod.GET, entity2, String.class);
使用Java的Acumatica API客户端如何解决此问题?
答案 0 :(得分:1)
我没有设置所有cookie。这就是我要做的
$("p").each(function(){
if($(this).css('text-align') == "center") {
$(this).find('img').addClass('center-block');
}
});