2011-11-08 111 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> <