Sefa
Sefa

Reputation: 41

RestTemplate postForObject return HttpClientErrorException: 401 null

I am trying to send a post message to authentication server and I am usign postforobject. When I run the program, i am getting "Exception in thread "main" org.springframework.web.client.HttpClientErrorException: 401 null" error

    RestTemplate rest = new RestTemplate();
    String responseEntity;
    String uri = "http://...";
    responseEntity = rest.postForObject(uri, null, String.class);
    System.out.println(responseEntity);

Also I tried

    responseEntity = rest.postForObject(uri, "", String.class);

Same result, it didn't work.

When I using Simple Rest Client it works enter image description here

Any idea?

Upvotes: 2

Views: 9578

Answers (1)

Michal
Michal

Reputation: 2273

401 null probably means that the server expected some form of authentication but none was presented (i.e. no Authorization header in your request)

The most likely explanation is: the Simple REST Client (re)uses Chrome's cookies. If you previously authenticated against your service using a form login, the Simple Rest Client will reuse the JSESSIONID cookie. To detect that simply press F12 and open the network tab of your debugger. FYI there are other browser plugins, for example "Advanced REST Client", which give you more visibility over what's being sent to the server.

When you send a request using restTemplate, it doesn't have access to the session cookie (which is to be expected). You should either post to URI that allows anonymous access, or provide some form of authentication in the request. If you require additional help please post your security configuration.

Upvotes: 6

Related Questions