2012-09-25 71 views
0

嗨,我得到這個JsonException有時......爲什麼發生這種情況可以解決這個問題,我的代碼。獲取org.json.JSONException的隨機錯誤:值java.lang.String類型的<!DOCTYPE不能轉換爲JSONObject

public int getResult(String name, double lat, double lon) { 
     try { 
      HttpClient httpclient = new DefaultHttpClient(); 
      String query = URLEncoder.encode(name, "utf-8"); 

      HttpPost httppost = new HttpPost("http://00004rl.rcomhost.com/demo/?json=get_dealing&dev=1&store_name=" + query + "&longitude=" + lon 
        + "&latitude=" + lat); 
      JSONObject object = new JSONObject(); 
      StringEntity se = new StringEntity(object.toString()); 
      se.setContentType(new BasicHeader(HTTP.CONTENT_TYPE, "application/json")); 
      httppost.setEntity(se); 
      HttpResponse response = httpclient.execute(httppost); 
      HttpEntity entity = response.getEntity(); 
      InputStream is = entity.getContent(); 
      BufferedReader reader = new BufferedReader(new InputStreamReader(is, "iso-8859-1"), 8); 
      StringBuilder sb = new StringBuilder(); 
      String line = null; 
      while ((line = reader.readLine()) != null) { 
       sb.append(line + "\n"); 
      } 
      is.close(); 
      JSONObject jso = new JSONObject(sb.toString()); 
      if (jso.getString("status").equals("ok")) { 
       return 1; 
      } 
     } catch (Exception e) { 
      e.printStackTrace(); 
      return 0; 
     } 
     return 0; 
    } 

我得到異常下面這一段時間我的logcat低於

09-25 19:13:26.079: W/System.err(4842): org.json.JSONException: Value <!DOCTYPE of type java.lang.String cannot be converted to JSONObject 
    09-25 19:13:26.079: W/System.err(4842): at org.json.JSON.typeMismatch(JSON.java:107) 
    09-25 19:13:26.079: W/System.err(4842): at org.json.JSONObject.<init>(JSONObject.java:158) 
    09-25 19:13:26.079: W/System.err(4842): at org.json.JSONObject.<init>(JSONObject.java:171) 
    09-25 19:13:26.079: W/System.err(4842): at com.eheuristics.android.diegodeals.googleplacesandmaps.MainActivity$LoadPlaces.getResult(MainActivity.java:246) 
    09-25 19:13:26.079: W/System.err(4842): at com.eheuristics.android.diegodeals.googleplacesandmaps.MainActivity$LoadPlaces.doInBackground(MainActivity.java:208) 
    09-25 19:13:26.079: W/System.err(4842): at com.eheuristics.android.diegodeals.googleplacesandmaps.MainActivity$LoadPlaces.doInBackground(MainActivity.java:1) 
    09-25 19:13:26.079: W/System.err(4842): at android.os.AsyncTask$2.call(AsyncTask.java:185) 
    09-25 19:13:26.079: W/System.err(4842): at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:306) 
    09-25 19:13:26.089: W/System.err(4842): at java.util.concurrent.FutureTask.run(FutureTask.java:138) 
    09-25 19:13:26.089: W/System.err(4842): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1088) 
    09-25 19:13:26.089: W/System.err(4842): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:581) 
    09-25 19:13:26.089: W/System.err(4842): at java.lang.Thread.run(Thread.java:1019) 
+0

您可以在構建JSON之前給我們提供結果嗎?看起來它是一個HTML頁面。 –

+0

不是那個壞消息給他的消極的問題! 服務器位於開發人員的另一端,開發人員可能處於新生階段! – Saty

+0

謝謝user1931595 :(你的積極回覆非常感謝你 –

回答

3

你的服務器在HTML發送給您迴應有時候,不是JSON。

+0

雅彼得DeWeese和巨石你們都是正確的錯誤是來自服務器 –

+0

不知道爲什麼這樣的人給負面標記(反對票)這個問題:(我已經試過很多,但不知道實際上錯誤來自服務器 –

0

看來結果有問題。 您應該嘗試在構建JSON對象之前打印結果。

如果出現錯誤,然後出於某種原因結果是HTML頁面,則無法構建您的JSON

對於這個錯誤,看起來結果是HTML,因爲<!DOCTYPE而不是JSON。

0

問題是你正在處理作爲JSON的服務器響應,這是你預期的行爲。但在某些情況下,如服務器關閉,請求錯誤,服務器忙碌......有人已經定義了一個UncaughtException處理程序,通過某些GUI指示用戶出現問題,有時會由服務器返回。 如果您正在讀取服務器響應的某處,您實際上可以將其複製並嘗試在某個HTML頁面查看器中運行以獲取確切的服務器響應....

0

似乎此錯誤即將發生在SDK級別25,但對於SDK級別23,它工作正常。

相關問題