Java 从RESTWeb服务返回uri中没有参数的数据

Java 从RESTWeb服务返回uri中没有参数的数据,java,rest,servlets,return,inputstream,Java,Rest,Servlets,Return,Inputstream,从rest web服务返回字符串时出现问题: [WebInvoke(Method = "PUT", UriTemplate = "/Filters", BodyStyle = WebMessageBodyStyle.Bare, ResponseFormat = WebMessageFormat.Json)] [OperationContract] string CreateFilter(Filter InputFilter); 正如您所看到的,URL没有任何参数,所有数据都通过流传递到URL

从rest web服务返回字符串时出现问题:

[WebInvoke(Method = "PUT", UriTemplate = "/Filters", 
BodyStyle = WebMessageBodyStyle.Bare, ResponseFormat = WebMessageFormat.Json)]
[OperationContract]
string CreateFilter(Filter InputFilter);
正如您所看到的,URL没有任何参数,所有数据都通过流传递到URL。返回的字符串基于发送到URL的数据

当我使用.net测试应用程序时,基于输入的响应是正确的

当我使用Java servlet时,当调用HttpURLRequest的GetInputStream时,服务返回400错误

Javaservlet似乎对URL进行了第二次调用,并期望得到一个不存在的响应,因为它是基于输入的。我通过将返回值更改为常数(因此不基于输入)来测试这一点。当我这样做的时候,我的GetInputStream方法就工作了

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;

注意:其他方法对包含参数的URL使用相同的代码,并返回正确的数据,添加servlet正在我的问题方法中对URL进行第二次调用的证据。此外,out.close不是问题。

已解决。这最终成为Servlet发送的Json中的一个问题。当web服务试图使用一段特定的数据时,它将抛出并出错,而不会生成所需的返回字符串

[{"Key":"1","Value":"one"},{"Key":"2","Value":"two"},{"Key":"3","Value":"three"}]
C表示法^^

{"3":"three","2":"two","1":"one"}
Java表示^^

{"3":"three","2":"two","1":"one"}
字典vs HashMap>