Saya tidak menemukan contoh bagaimana menyelesaikan masalah saya, jadi saya ingin meminta bantuan Anda. Saya tidak bisa begitu saja mengirim permintaan POST menggunakan objek RestTemplate di JSON
Setiap kali saya mendapatkan:
org.springframework.web.client.HttpClientErrorException: 415 Jenis Media Tidak Didukung
Saya menggunakan RestTemplate dengan cara ini:
...
restTemplate = new RestTemplate();
List<HttpMessageConverter<?>> list = new ArrayList<HttpMessageConverter<?>>();
list.add(new MappingJacksonHttpMessageConverter());
restTemplate.setMessageConverters(list);
...
Payment payment= new Payment("Aa4bhs");
Payment res = restTemplate.postForObject("http://localhost:8080/aurest/rest/payment", payment, Payment.class);
Apa kesalahanku?
Jawaban:
Teknik ini berhasil untuk saya:
saya harap ini membantu
sumber
.put()
adalahvoid
!postForEntity(url, entity, String.class)
karya di tempatput(url, entity)
Saya mengalami masalah ini saat mencoba men-debug titik akhir REST. Berikut adalah contoh dasar menggunakan kelas RestTemplate Spring untuk membuat permintaan POST yang saya gunakan. Butuh waktu lama bagi saya untuk mengumpulkan kode dari berbagai tempat untuk mendapatkan versi yang berfungsi.
Parser JSON tertentu, titik akhir istirahat saya menggunakan tanda kutip ganda yang diperlukan di sekitar nama bidang jadi itulah mengapa saya lolos dari tanda kutip ganda di String requestJson saya.
sumber
Saya telah menggunakan template istirahat dengan JSONObjects sebagai berikut:
sumber
Seperti yang ditentukan di sini, saya rasa Anda perlu menambahkan
messageConverter
untukMappingJacksonHttpMessageConverter
sumber
Jika Anda menggunakan Spring 3.0, cara mudah untuk menghindari org.springframework.web.client.HttpClientErrorException: 415 Pengecualian Jenis Media yang Tidak Didukung , adalah dengan menyertakan file jar jackson di jalur kelas Anda, dan menggunakan
mvc:annotation-driven
elemen config. Seperti yang ditentukan di sini .Saya menarik rambut saya mencoba mencari tahu mengapa aplikasi mvc-ajax bekerja tanpa konfigurasi khusus untuk file
MappingJacksonHttpMessageConverter
. Jika Anda membaca artikel yang saya tautkan di atas dengan cermat:sumber
Kesalahan "415 Jenis Media Tidak Didukung" memberi tahu Anda bahwa server tidak akan menerima permintaan POST Anda. Permintaan Anda baik-baik saja, itu adalah server yang salah konfigurasi.
MappingJacksonHttpMessageConverter
akan secara otomatis mengatur header tipe konten permintaan keapplication/json
, dan perkiraan saya adalah bahwa server Anda menolaknya. Anda belum memberi tahu kami apa pun tentang penyiapan server Anda, jadi saya tidak bisa benar-benar memberi tahu Anda tentang itu.sumber
Saya melakukan dengan cara ini dan berhasil.
// Berikan header di sini
Semoga ini membantu
sumber
Saya mendapatkan masalah ini dan saya menggunakan Spring's RestTemplate di klien dan Spring Web di server. Kedua API memiliki pelaporan kesalahan yang sangat buruk, membuatnya sangat sulit untuk dikembangkan.
Setelah berjam-jam mencoba semua jenis eksperimen, saya menemukan bahwa masalahnya disebabkan oleh memberikan referensi nol untuk badan POST, bukan Daftar yang diharapkan. Saya berasumsi bahwa RestTemplate tidak dapat menentukan tipe konten dari objek null, tetapi tidak mengeluh tentang itu. Setelah menambahkan header yang benar, saya mulai mendapatkan pengecualian sisi server yang berbeda di Spring sebelum memasuki metode layanan saya.
Perbaikannya adalah meneruskan List kosong dari klien, bukan null. Tidak ada header yang diperlukan karena tipe konten default digunakan untuk objek bukan nol.
sumber
Kode ini berfungsi untuk saya;
sumber
Jika Anda tidak ingin memproses respons
Jika Anda membutuhkan respons untuk memproses
sumber
Bagi saya, kesalahan terjadi dengan penyiapan ini:
AndroidAnnotations
Spring Android RestTemplate Module
dan ...GsonHttpMessageConverter
Anotasi Android memiliki beberapa masalah dengan ini dikonversi untuk menghasilkan
POST
permintaan tanpa parameter. Cukup parameternew Object()
memecahkannya untuk saya.sumber
Mengapa bekerja lebih keras dari yang Anda harus?
postForEntity
menerimaMap
objek sederhana sebagai input. Berikut ini berfungsi dengan baik untuk saya saat menulis tes untuk titik akhir REST tertentu di Spring. Saya percaya ini adalah cara yang paling sederhana untuk membuat permintaan JSON POST di Spring:sumber
Jika Anda tidak ingin memetakan JSON sendiri, Anda dapat melakukannya sebagai berikut:
sumber
Saya mencoba sebagai berikut di boot musim semi:
sumber