Java 卷曲请求-更改为RestTemplate-无正文错误

Java 卷曲请求-更改为RestTemplate-无正文错误,java,spring-boot,curl,spring-resttemplate,Java,Spring Boot,Curl,Spring Resttemplate,我有一个curl命令,它工作得很好,但是当我在RestTemplate中尝试它时,会出现错误 卷曲: 弹簧座模板 restTemplate = new RestTemplate(); HttpHeaders headers = new HttpHeaders(); headers.setContentType(MediaType.APPLICATION_JSON); headers.setAccept(Collections.singletonList(Media

我有一个curl命令,它工作得很好,但是当我在RestTemplate中尝试它时,会出现错误

卷曲:

弹簧座模板

    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);
所以,如何正确地将上述curl转换为RestTemplate,以避免服务器错误和正文错误。Curl命令工作正常。

试试这个

    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);
restTemplate=新的restTemplate();
HttpHeaders=新的HttpHeaders();
headers.setContentType(MediaType.APPLICATION_JSON);
setAccept(singletonList(MediaType.APPLICATION_JSON));
HttpEntity实体=
新的HttpEntity(“{\”刷新\“:\”eyJhb…\“}”,标题);

正如您正确注意到的,您应该使用:

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

但是你有401只是因为你传递了另一个令牌(检查diff-cURL与java代码版本)

map.put(“刷新令牌”,“eyJhbGci…”当我这样做时,我得到这个错误:401未经授权:[没有人]你应该使用:map.put(“刷新令牌”,“eyJhbGci…”。你有401是因为你传递了另一个令牌(检查diff-cURL与java代码版本)谢谢star67,我使用新的有效刷新代码和它的逻辑。我得到了访问令牌。祝您愉快。请发布您的答案以被接受谢谢,但它也不起作用。原因:org.springframework.web.client.HttpClientErrorException$Unauthorized:401 Unauthorized:[无正文]
    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);
map.put("refresh_token", "eyJhbGci...".