簡體   English   中英

從Java后端上的NSstring讀取REST響應

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM