มีปัญหาในการส่งคืนสตริงจากบริการเว็บที่เหลือ:
[WebInvoke(Method = "PUT", UriTemplate = "/Filters",
BodyStyle = WebMessageBodyStyle.Bare, ResponseFormat = WebMessageFormat.Json)]
[OperationContract]
string CreateFilter(Filter InputFilter);
ดังที่คุณเห็นว่า URL ไม่มีพารามิเตอร์ใดๆ ข้อมูลทั้งหมดจะถูกส่งผ่านสตรีมไปยัง URL สตริงที่ส่งคืนจะขึ้นอยู่กับข้อมูลที่ส่งไปยัง URL
เมื่อฉันใช้แอปพลิเคชันทดสอบ .net การตอบสนองนั้นถูกต้อง (ขึ้นอยู่กับอินพุต)
เมื่อฉันใช้เซิร์ฟเล็ต Java บริการส่งคืนข้อผิดพลาด 400 เมื่อเรียกใช้ GetInputStream() สำหรับ HttpURLRequest
ปรากฏว่าเซิร์ฟเล็ต Java ทำการเรียกครั้งที่สองไปยัง URL และคาดว่าจะได้รับการตอบสนอง (ซึ่งไม่มีอยู่เนื่องจากขึ้นอยู่กับอินพุต) ฉันทดสอบสิ่งนี้โดยเปลี่ยนการส่งคืนเป็นค่าคงที่ (ซึ่งไม่ได้ขึ้นอยู่กับอินพุต) เมื่อฉันทำสิ่งนี้วิธี GetInputStream() ของฉันก็ใช้งานได้
รหัสเซิร์ฟเล็ต:
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;
หมายเหตุ: วิธีการอื่นใช้รหัสเดียวกันนี้สำหรับ URL ที่มีพารามิเตอร์อยู่และส่งคืนข้อมูลที่ถูกต้อง (เพิ่มหลักฐานว่าเซิร์ฟเล็ตกำลังทำการเรียก URL ครั้งที่สองในวิธีที่เป็นปัญหาของฉัน) นอกจากนี้ out.close() ไม่ใช่ ปัญหา.