Возврат данных из оставшейся веб-службы без параметров в uri

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

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


person AssHat44    schedule 08.11.2011    source источник


Ответы (1)


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

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

Представление С# ^^

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

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

Словарь против HashMap >‹

person AssHat44    schedule 08.11.2011