2011-11-08 110 views
0

NO参数有返回从REST Web服务创建的字符串的问题数据:返回从REST Web服务与URI

[WebInvoke(Method = "PUT", UriTemplate = "/Filters", 
BodyStyle = WebMessageBodyStyle.Bare, ResponseFormat = WebMessageFormat.Json)] 
[OperationContract] 
string CreateFilter(Filter InputFilter); 

正如你所看到的网址没有任何参数,所有的数据传递通过流到URL。返回的字符串基于发送到URL的数据。

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

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

看来Java servlet对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()不是问题。

回答

0

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

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

C#表示^^

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

Java表示^^

字典VS的HashMap> <