Mengalami masalah saat mengembalikan String dari layanan web lainnya:
[WebInvoke(Method = "PUT", UriTemplate = "/Filters",
BodyStyle = WebMessageBodyStyle.Bare, ResponseFormat = WebMessageFormat.Json)]
[OperationContract]
string CreateFilter(Filter InputFilter);
Seperti yang Anda lihat, URL tidak memiliki parameter apa pun, semua data diteruskan melalui aliran ke URL. String yang dikembalikan didasarkan pada data yang dikirim ke URL.
Ketika saya menggunakan aplikasi pengujian .net, responsnya benar (berdasarkan masukan).
Ketika saya menggunakan servlet Java, layanan mengembalikan kesalahan 400 ketika GetInputStream() untuk HttpURLRequest dipanggil.
Tampaknya servlet Java melakukan panggilan kedua ke URL dan mengharapkan respons (yang tidak ada karena didasarkan pada input). Saya mengujinya dengan mengubah pengembalian ke konstanta (jadi tidak berdasarkan input). Ketika saya melakukan ini, metode GetInputStream() saya berfungsi.
Kode servlet:
OutputStream out = connection.getOutputStream();
out.write(jsonValue.getBytes());
out.close();
String response = "";
BufferedReader readResponse =
new BufferedReader(new InputStreamReader(connection.getInputStream()));
response = readResponse.readLine();
return response;
Catatan: Metode lain menggunakan kode yang sama untuk URL dengan parameter di dalamnya, dan mengembalikan data yang benar (menambahkan bukti bahwa servlet membuat panggilan kedua ke URL dalam metode masalah saya.) Juga out.close() BUKAN merupakan masalah.