Saya ingin mengonversi cuplikan ikal (berfungsi) berikut menjadi panggilan RestTemplate:
curl -i -X POST -d "[email protected]" https://app.example.com/hr/email
Bagaimana cara saya melewati parameter email dengan benar? Kode berikut ini menghasilkan respons 404 Tidak Ditemukan:
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 );
Saya sudah mencoba merumuskan panggilan yang benar di PostMan, dan saya bisa membuatnya bekerja dengan benar dengan menetapkan parameter email sebagai parameter "form-data" di tubuh. Apa cara yang benar untuk mencapai fungsi ini di RestTemplate?
java
spring
rest
resttemplate
sim
sumber
sumber
Jawaban:
Metode POST harus dikirim di sepanjang objek permintaan HTTP. Dan permintaan tersebut dapat berisi tajuk HTTP atau badan HTTP atau keduanya.
Karenanya mari kita buat entitas HTTP dan kirim header dan parameter di badan.
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 ...-
sumber
ResponseEntity<String> response = new RestTemplate().postForEntity(url, request, String.class);
Saya mendapatkanorg.springframework.http.converter.HttpMessageNotWritableException: Could not write content: No serializer found for class java.util.Collections$3
args
ini adalah sebuah array dari Stringcurl -X POST --data '{"file": "/xyz.jar", "className": "my.class.name", "args": ["100"]}' -H "Content-Type: application/json" localhost:1234/batches
Cara POST data campuran: File, String [], String dalam satu permintaan.
Anda hanya dapat menggunakan apa yang Anda butuhkan.
Permintaan POST akan memiliki File di Tubuh dan struktur berikutnya:
sumber
di sini adalah program lengkap untuk membuat panggilan istirahat POST menggunakan pegas's RestTemplate.
sumber
ResponseEntity<?> response = new RestTemplate().postForEntity(url, request, String.class);
. Saya mendapatkanorg.springframework.http.converter.HttpMessageNotWritableException: Could not write content: No serializer found for class java.util.Collections$3
application/json
jenis konten denganapplication/x-www-form-urlencoded
Anda akan mendapatkan org.springframework.web.client.RestClientException: Tidak ada HttpMessageConverter untuk java.util.HashMap dan jenis konten "application / x-www-form-urlencoded" - lihat stackoverflow.com/q / 31342841/355438String url Anda membutuhkan penanda variabel untuk peta yang Anda lewati agar berfungsi, seperti:
Atau Anda bisa secara eksplisit memberi kode pada params query ke dalam String untuk memulai dan tidak harus meneruskan peta sama sekali, seperti:
Lihat juga https://stackoverflow.com/a/47045624/1357094
sumber