Возникла проблема с возвратом строки из веб-службы отдыха:
[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 () это НЕ проблема.