vicky
vicky

Reputation: 940

curl request - changed to RestTemplate - No Body Error

I have a curl command, which is working fine, but when I am trying it in RestTemplate I am getting errors.

Curl:

curl -X POST "https://api.example.com/v1/tokens/accessToken" -H  "accept: application/json" -H  "Content-Type: application/json" -d "{  \"refresh_token\": \"eyJhbGciOiJSUzUxMiIsInR5cCI6IkpXVCIsIng1dCI6IndKZlQ2NHpqemQxWk4yS1duX3FYSmpvOHByMCIsImtpZCI6Im9yYWtleSJ9.eyJzdWIiOm51bGwsIm9yYWNsZS5vYXV0aC51c2VyX29yaWdpbl9pZF90eXBlIjoiTERBUF9VSUQiLCJvcmFjbGUub2F1dGgudXNlcl9vcmlnaW5faWQiOiJQUk9BQ1QyMDE5ISIsImlzcyI6Ind3dy5vcmFjbGUuZXhhbXBsZS5jb20iLCJvcmFjbGUub2F1dGgucnQudHRjIjoicmVzb3VyY2VfYWNjZXNzX3RrIiwib3JhY2xlLm9hdXRoLnN2Y19wX24iOiJPQXV0aFNlcnZpY2VQcm9maWxlIiwiaWF0IjoxNTk1MjM3NDk0LCJvcmFjbGUub2F1dGgudGtfY29udGV4dCI6InJlZnJlc2hfdG9rZW4iLCJleHAiOjE1OTU4NDIyOTQsInBybiI6bnVsbCwianRpIjoiN2I0YzExZDAtNjRkZi00YjhkLWJkZTYtNmM2ODdkZTY4MDI2Iiwib3JhY2xlLm9hdXRoLnNjb3BlIjoiQXN1cFVzZXJQcm9maWxlLm1lIiwib3JhY2xlLm9hdXRoLmNsaWVudF9vcmlnaW5faWQiOiJNeUFzdXBBUEkiLCJ1c2VyLnRlbmFudC5uYW1lIjoiRGVmYXVsdERvbWFpbiIsIm9yYWNsZS5vYXV0aC5pZF9kX2lkIjoiMTIzNDU2NzgtMTIzNC0xMjM0LTEyMzQtMTIzNDU2Nzg5MDEyIn0.UjJKgHkCypoyIsK7-24vUdX4jT2vkODW56tfwNuAnFqvaS712ZdDAQFiu5wjS9sCajAx0LDoJXQoq5ThVliY71FU9cvwS80SRpXzEIX_TcnnOfNXyZBzTyCqKDPjin0ajZ9Jvc_LNbMMD15i0tN3U6IQHmahm8yikGL7lBtvT30\"}"

Spring Rest Template

    restTemplate = new RestTemplate();
    HttpHeaders headers = new HttpHeaders();
    headers.setContentType(MediaType.APPLICATION_JSON);
    headers.setAccept(Collections.singletonList(MediaType.APPLICATION_JSON));

    Map<String, Object> map = new HashMap<>();
    map.put("body", "{\"refresh_token\": \"eyJhbGciOiJSUzUxMiIsInR5cCI6IkpXVCIsIng1dCI6IndKZlQ2NHpqemQxWk4yS1duX3FYSmpvOHByMCIsImtpZCI6Im9yYWtleSJ9.eyJzdWIiOm51bGwsIm9yYWNsZS5vYXV0aC51c2VyX29yaWdpbl9pZF90eXBlIjoiTERBUF9VSUQiLCJvcmFjbGUub2F1dGgudXNlcl9vcmlnaW5faWQiOiJQUk9BQ1QyMDE5ISIsImlzcyI6Ind3dy5vcmFjbGUuZXhhbXBsZS5jb20iLCJvcmFjbGUub2F1dGgucnQudHRjIjoicmVzb3VyY2VfYWNjZXNzX3RrIiwib3JhY2xlLm9hdXRoLnN2Y19wX24iOiJPQXV0aFNlcnZpY2VQcm9maWxlIiwiaWF0IjoxNTk1MjM4Njc4LCJvcmFjbGUub2F1dGgudGtfY29udGV4dCI6InJlZnJlc2hfdG9rZW4iLCJleHAiOjE1OTU4NDM0NzgsInBybiI6bnVsbCwianRpIjoiMDZiYWE1MjgtMTZmOC00MzU1LWE3ZmYtNDc3ZjA4ZTNmMGU1Iiwib3JhY2xlLm9hdXRoLnNjb3BlIjoiQXN1cFVzZXJQcm9maWxlLm1lIiwib3JhY2xlLm9hdXRoLmNsaWVudF9vcmlnaW5faWQiOiJNeUFzdXBBUEkiLCJ1c2VyLnRlbmFudC5uYW1lIjoiRGVmYXVsdERvbWFpbiIsIm9yYWNsZS5vYXV0aC5pZF9kX2lkIjoiMTIzNDU2NzgtMTIzNC0xMjM0LTEyMzQtMTIzNDU2Nzg5MDEyIn0.UCkScWFn8d3pupwAxilT8T-m6Rf8fgZ8ge9OZvWZbZ-4eCVCPyHeI8A1a2QV0_iZhjwHaITNTzCZ4Eydfkm-mZuCa-PLY63HJhWLzTGlbaYsWRVtHaLF58F6spZ106T6T3ZDvQVIsiQ9845ruG_1ib0vKV_57X_CcVB4XZktYvA\"}");

    HttpEntity<Map<String, Object>> entity = new HttpEntity<>(map, headers);

    String urlString = "https://api.example.com/v1/tokens/accessToken";
    String response = restTemplate.postForObject(urlString, entity, String.class);

Exception:

Caused by: org.springframework.web.client.HttpServerErrorException$InternalServerError: 500 Internal Server Error: [{"error":"Request Failed"}]

So How to properly convert above curl into RestTemplate to avoid server and no body errors. The Curl command is working fine.

Upvotes: 1

Views: 6502

Answers (3)

Ballo Ibrahima
Ballo Ibrahima

Reputation: 627

check your token if the token has a type for example Bearer you must write so:

"Authorization": "Bearer rrdedzfdgf........."

and make sure that there is only one space between Bearer and the token

Upvotes: 0

star67
star67

Reputation: 1832

as you correctly noticed, you should use:

map.put("refresh_token", "eyJhbGci...". 

but u have 401 just because u passed another token (check diff cURL vs. java code version)

Upvotes: 1

Try this

    restTemplate = new RestTemplate();
    HttpHeaders headers = new HttpHeaders();
    headers.setContentType(MediaType.APPLICATION_JSON);
    headers.setAccept(singletonList(MediaType.APPLICATION_JSON));
    HttpEntity<String> entity = 
             new HttpEntity<>("{\"refresh_token\": \"eyJhb...\"}", headers);

Upvotes: 1

Related Questions