Возврат данных из остальных веб-сервисов без параметров в URI - PullRequest
0 голосов
/ 08 ноября 2011

Возникла проблема с возвратом строки из веб-службы отдыха:

[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 () это НЕ проблема.

1 Ответ

0 голосов
/ 09 ноября 2011

решаемая.Это в конечном итоге стало проблемой в Json, который отправлял сервлет.Когда веб-служба пытается использовать один конкретный фрагмент данных, она выдаст ошибку и не выдаст необходимую возвращаемую строку.

[{"Key":"1","Value":"one"},{"Key":"2","Value":"two"},{"Key":"3","Value":"three"}]

C # представление ^^

{"3":"three","2":"two","1":"one"}

Javaпредставление ^^

Словарь против HashMap> <</p>

...