401访问通过get_cookie的Rest API时出错

时间:2019-02-12 03:12:48

标签: spring resttemplate

我正在访问一个API,希望该API对他们的Login端点进行POST调用,然后进行后续调用以获取数据。我对其登录端点进行的呼叫有效。但是随后的获取数据调用引发401错误。这是我得到的错误

org.springframework.web.client.HttpClientErrorException:401未经授权     在org.springframework.web.client.DefaultResponseErrorHandler.handleError(DefaultResponseErrorHandler.java:91)     在org.springframework.web.client.RestTemplate.handleResponseError(RestTemplate.java:615)     在org.springframework.web.client.RestTemplate.doExecute(RestTemplate.java:573)     在org.springframework.web.client.RestTemplate.execute(RestTemplate.java:544)     在org.springframework.web.client.RestTemplate.exchange(RestTemplate.java:465)     在com.wsc.eventconsumer.phonex.api.InventoryServiceImpl.getProducts(InventoryServiceImpl.java:70)

现在,当我使用Postman和Restlet客户端时,此方法工作正常。我注意到,在Restlet客户端中,对API的GET调用传递了一个由API在登录调用中设置的cookie。我尝试从GET请求中的登录调用传递响应标头。但是我仍然得到401。我正在使用标准的resttemplate配置。

<bean id="restTemplate" class="org.springframework.web.client.RestTemplate"/>

HttpEntity<Credentials> entity = new HttpEntity<Credentials>(credentials, headers);
ResponseEntity<String> response = restTemplate.exchange(loginEndpoint, HttpMethod.POST, entity, String.class);
HttpHeaders rHeaders = response.getHeaders();

HttpEntity<String> request = new HttpEntity<String>(rHeaders);
ResponseEntity<Product[]> response2 = restTemplate.exchange(productEndpoint, 
                HttpMethod.GET, request, Product[].class);

0 个答案:

没有答案