2015-12-15 88 views
-1

從REST服務器獲取JSON數據時遇到問題。 Web瀏覽器返回JSON數據here正確,但下面的代碼將導致FileNotFound例外:從Android的REST服務器獲取JSON時發生FileNotFound異常

private void getJSON(String url) { 
    class GetJSONServices extends AsyncTask<String, Void, String> { 
     ProgressDialog loading; 

     @Override 
     protected void onPreExecute() { 
      super.onPreExecute(); 
      loading = new ProgressDialog(ServicesActivity.this); 
      loading.setTitle(""); 
      loading.setMessage("Getting your services..."); 
      loading.setCancelable(false); 
      loading.show(); 
     } 

     @Override 
     protected String doInBackground(String... params) { 

      String uri = params[0]; 

      BufferedReader bufferedReader = null; 
      try { 
       URL url = new URL(uri); 
       HttpURLConnection con = (HttpURLConnection) url.openConnection(); 
       StringBuilder sb = new StringBuilder(); 

       bufferedReader = new BufferedReader(new InputStreamReader(con.getInputStream())); 

       String json; 
       while((json = bufferedReader.readLine())!= null){ 
        sb.append(json+"\n"); 
       } 

       return sb.toString().trim(); 

      }catch(Exception e){ 
       Log.e("Do In Background", getStackTrace(e)); 
       return null; 
      } 

     } 

     @Override 
     protected void onPostExecute(String s) { 
      super.onPostExecute(s); 

      loading.dismiss(); 
      try { 
       JSONObject jsonObject = new JSONObject(s); 
       Toast.makeText(ServicesActivity.this, s, Toast.LENGTH_SHORT).show(); 
      } 
      catch (Exception e) { 
       Log.e("On Post Execute", getStackTrace(e)); 
      } 

     } 
    } 
    GetJSONServices gj = new GetJSONServices(); 
    gj.execute(url); 
} 

此外,AndroidManifest.xml中有INTERNET權限,其餘服務器允許CORS。是什麼導致了這個錯誤,我該如何解決?

編輯:我使用HttpURLConnection,而不是刪除的HttpClient。

+0

什麼是'sb.toString()'的輸出? –

+0

[在Web服務中讀取Json在Android中休息。 FileNotFoundException](http://stackoverflow.com/questions/11978412/reading-json-in-webservice-rest-in-android-filenotfoundexception) – Sree

+0

發佈logcat – Pankaj

回答

1

我使用commons.io.2.4庫在這個例子中,

顯然我沒有得到的錯誤,你可以看到輸出,

public static void main(String[] args) { 
    try { 

     URL url = new URL("http://eventoserver-ecinauce.rhcloud.com/songwol/services"); 
     HttpURLConnection connection = (HttpURLConnection)url.openConnection(); 
     connection.connect(); 

     String result = IOUtils.toString(connection.getInputStream()); 
     System.out.println(""+result); 

    } catch (Exception e) { 
     // TODO: handle exception 
    } 
} 

輸出

{ 
    "3": { 
    "id": 3, 
    "info": null, 
    "name": "singer", 
    "owner": 1, 
    "packages": {}, 
    "reviews": {}, 
    "type": "performer" 
    } 
} 
相關問題