Traducir curl autorizado -u request posterior con datos JSON al equivalente de RestTemplate

Estoy usando github api para crear repositorys usando el command curl como se muestra abajo y funciona bien.

curl -i -u "username:password" -d '{ "name": "TestSystem", "auto_init": true, "private": true, "gitignore_template": "nanoc" }' https://github.host.com/api/v3/orgs/Tester/repos 

Ahora necesito ejecutar la misma URL anterior a través de HttpClient y estoy usando RestTemplate en mi proyecto.

He trabajado con RestTemplate antes y sé cómo ejecutar url simple pero no estoy seguro de cómo publicar los datos JSON anteriores en mi url usando RestTemplate

 RestTemplate restTemplate = new RestTemplate(); HttpHeaders headers = new HttpHeaders(); headers.setContentType(MediaType.APPLICATION_JSON); // Create a multimap to hold the named parameters MultiValueMap<String, String> parameters = new LinkedMultiValueMap<String, String>(); parameters.add("username", username); parameters.add("password", password); // Create the http entity for the request HttpEntity<MultiValueMap<String, String>> entity = new HttpEntity<MultiValueMap<String, String>>(parameters, headers); ResponseEntity<String> response = restTemplate.exchange(url, HttpMethod.POST, entity, String.class); 

¿Alguien puede dar un ejemplo de cómo ejecutaría la URL anterior al publicar JSON en ella?

No he tenido time de probar el código, pero creo que esto debería ser el truco. Cuando estamos usando curl -u , para pasar las cnetworkingenciales, debe codificarse y pasarse junto con el encabezado Authorization , como se indica aquí http://curl.haxx.se/docs/manpage.html#–basic . Los datos json simplemente se pasan como HttpEntity.

 String encoding = Base64Encoder.encode("username:password"); HttpHeaders headers = new HttpHeaders(); headers.set("Authorization", "Basic " + encoding); headers.setContentType(MediaType.APPLICATION_JSON); // optional String data = "{ \"name\": \"TestSystem\", \"auto_init\": true, \"private\": true, \"gitignore_template\": \"nanoc\" }"; String url = "https://github.host.com/api/v3/orgs/Tester/repos"; HttpEntity<String> entity = new HttpEntity<String>(data, headers); RestTemplate restTemplate = new RestTemplate(); ResponseEntity<String> response = restTemplate.exchange(url, HttpMethod.POST, entity , String.class);