Spring 对stockitem的GET调用出现未经授权的401错误

Spring 对stockitem的GET调用出现未经授权的401错误,spring,acumatica,resttemplate,Spring,Acumatica,Resttemplate,我正在使用JavaSpringRESTTemplate访问AcumaticaAPI。对登录端点的POST调用工作正常。但是下一个获取StockItems的调用将得到一个401未经授权的错误 org.springframework.web.client.HttpClientErrorException: 401 Unauthorized at org.springframework.web.client.DefaultResponseErrorHandler.handleError(Default

我正在使用JavaSpringRESTTemplate访问AcumaticaAPI。对登录端点的POST调用工作正常。但是下一个获取StockItems的调用将得到一个
401未经授权的错误

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调用传递了一个会话cookie,该cookie是由API在登录调用中设置的。我尝试在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);
HttpEntity entity=新的HttpEntity(凭证、标题);
ResponseEntity response=restTemplate.exchange(“https://xxxx.acumatica.com/entity/auth/login", 
HttpMethod.POST,实体,String.class);
HttpHeaders rHeaders=response.getHeaders();
字符串set\u cookie=rHeaders.getFirst(rHeaders.set\u cookie);
if(LOG.isInfoEnabled()){LOG.info(“响应:+Response.toString());}
if(LOG.isInfoEnabled()){LOG.info(“设置Cookie:+Set_Cookie);}
HttpEntity entity2=新的HttpEntity(response.getHeaders());
ResponseEntity response2=restTemplate.exchange(“https://usell.acumatica.com/entity/Default/6.00.001/StockItem?$expand=属性,WarehouseDetails”,HttpMethod.GET,entity2,String.class);

使用Java的Acumatica API客户端是如何解决这个问题的?

我没有设置所有的cookies。。这就是我要做的一切

List<String> cookies = response.getHeaders().get(HttpHeaders.SET_COOKIE);
HttpHeaders requestHeaders = new HttpHeaders();
for (String cookie : cookies) {
requestHeaders.add("Cookie", cookie);
}
List cookies=response.getHeaders().get(HttpHeaders.SET_COOKIE);
HttpHeaders requestHeaders=新的HttpHeaders();
用于(字符串cookie:cookies){
添加(“Cookie”,Cookie);
}

我没有设置所有的cookies。。这就是我要做的一切

List<String> cookies = response.getHeaders().get(HttpHeaders.SET_COOKIE);
HttpHeaders requestHeaders = new HttpHeaders();
for (String cookie : cookies) {
requestHeaders.add("Cookie", cookie);
}
List cookies=response.getHeaders().get(HttpHeaders.SET_COOKIE);
HttpHeaders requestHeaders=新的HttpHeaders();
用于(字符串cookie:cookies){
添加(“Cookie”,Cookie);
}

看起来yuo没有将所有需要的凭证/头/令牌传递给acumastica。尝试检查您的java调用与工作调用,您是对的。。我所要做的就是用所有Cookies创建我的请求头。看起来yuo没有将所有需要的凭据/头/令牌传递给acumastica。尝试检查您的java调用与工作调用,您是对的。。我所要做的就是用所有cookies创建我的请求头