[英]Reading REST response from NSstring on Java Backend
當我嘗試從服務器上的get讀取響應時,出現以下錯誤:
JSON
Error: org.json.JSONException: A JSONObject text must begin with '{' at 1 [character 2 line 1]
客戶端是用Objective C編寫的IOS應用。我正在發送具有以下編碼的NSString:
NSString *jsonString = [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding];
這是該NSString的nslog輸出:
{
"longitude" : "-122.03121860000000253876",
"latitude" : "37.33233141000000188114"
}
這是我在Java服務器上的get函數:
@GET
@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.APPLICATION_JSON)
public String get(String result) throws JSONException, IOException {
JSONObject sit = null;
try {
System.out.println(result + "JSON");
sit = new JSONObject(result);
System.out.println("Success: json = ");
System.out.println(sit.toString(2));
} catch(JSONException ex) {
System.out.println("Error: " + ex);
}
return this.dBQ.getSItems(sit).toString();
}
我想知道你們是否可以指出正確的方向。具有諷刺意味的是,我能夠從客戶端獲得服務器的響應。 但是由於某種原因,我的java函數(在服務器上)的變量結果輸出為空,並拋出異常。
謝謝
我必須查找org.json.JSONObject
這是Android API,對不對? 為什么在后端使用它?
無論如何,查看您使用的構造函數的JavaDoc時,它說:
參數json String:包含對象的JSON編碼字符串 。
您的result
字符串已經由JAX-RS解析,因此它只是沒有花括號的裸文本。 所以我要說這就是為什么您遇到例外。
就像我提到的那樣,我確實不知道Android API,但是如果您確實必須使用它,則應先嘗試使用JSONObject.quote(String)
來包裝您的字符串,然后再將其傳遞給構造函數。
實際上,我回答了自己的問題,我使用了帶有以下代碼的發布請求:
private DBQuery dBQ = new DBQuery();
@POST
@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.APPLICATION_JSON)
public String getresponses(String si) {
return this.dBQ.getItems(si).toString();
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.