Chcę przekonwertować następujący (działający) fragment curl na wywołanie RestTemplate:
curl -i -X POST -d "[email protected]" https://app.example.com/hr/email
Jak poprawnie przekazać parametr email? Poniższy kod powoduje wyświetlenie odpowiedzi 404 Not Found:
String url = "https://app.example.com/hr/email";
Map<String, String> params = new HashMap<String, String>();
params.put("email", "[email protected]");
RestTemplate restTemplate = new RestTemplate();
ResponseEntity<String> response = restTemplate.postForEntity( url, params, String.class );
Próbowałem sformułować prawidłowe wywołanie w PostMan i mogę sprawić, by działało poprawnie, określając parametr e-mail jako parametr „form-data” w treści. Jaki jest prawidłowy sposób osiągnięcia tej funkcjonalności w RestTemplate?
java
spring
rest
resttemplate
sim
źródło
źródło
Odpowiedzi:
Metoda POST powinna zostać przesłana wraz z obiektem żądania HTTP. Żądanie może zawierać albo nagłówek HTTP, albo treść HTTP, albo oba.
Dlatego stwórzmy jednostkę HTTP i wyślijmy nagłówki i parametry w treści.
http://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/web/client/RestTemplate.html#postForObject-java.lang.String-java.lang.Object-java.lang. Class-java.lang.Object ...-
źródło
ResponseEntity<String> response = new RestTemplate().postForEntity(url, request, String.class);
Dostajęorg.springframework.http.converter.HttpMessageNotWritableException: Could not write content: No serializer found for class java.util.Collections$3
args
curl -X POST --data '{"file": "/xyz.jar", "className": "my.class.name", "args": ["100"]}' -H "Content-Type: application/json" localhost:1234/batches
Jak POST mieszane dane: plik, ciąg [], ciąg w jednym żądaniu.
Możesz używać tylko tego, czego potrzebujesz.
Żądanie POST będzie miało plik w treści i następną strukturę:
źródło
tutaj jest pełny program do wywołania odpoczynku POST przy użyciu RestTemplate Springa.
źródło
ResponseEntity<?> response = new RestTemplate().postForEntity(url, request, String.class);
. Dostajęorg.springframework.http.converter.HttpMessageNotWritableException: Could not write content: No serializer found for class java.util.Collections$3
application/json
typ zawartości naapplication/x-www-form-urlencoded
otrzymasz org.springframework.web.client.RestClientException: No HttpMessageConverter dla java.util.HashMap i typ zawartości „application / x-www-form-urlencoded” - zobacz stackoverflow.com/q / 31342841/355438Twój ciąg adresu URL wymaga znaczników zmiennych dla mapy, którą przekazujesz do pracy, takich jak:
Lub możesz jawnie zakodować parametry zapytania w łańcuchu na początek i nie musisz w ogóle przekazywać mapy, na przykład:
Zobacz też https://stackoverflow.com/a/47045624/1357094
źródło