2011-11-02 46 views
2

下面我編寫了一個關於Web服務的教程,但沒有發生任何事情,雖然沒有給出錯誤。任何人都可以幫助我嗎?因爲我無法繼續。我需要連接到Web服務,這是行不通的。獲取響應rest web服務使用Java for Android

使用調試器,我發現它停止在這一特定行的第一個方法:HttpResponse response = client.execute(request);

private String result = ""; 

public void getResponse() 
    { 
     HttpClient client = new DefaultHttpClient();  
     String query ="working url"; 

     try 
     { 
      URL url = new URL(query); 
      URI uri = new URI(url.getProtocol(), url.getHost(),url.getPath(), url.getQuery(),null); 
      HttpGet request = new HttpGet(uri); 
      HttpResponse response = client.execute(request); 
      result=Userrequest(response); 

     } 
     catch(Exception ex) 
     { 

     } 




    } 
    public String Userrequest(HttpResponse response) 
    { 
     try  
     { 
      InputStream in = response.getEntity().getContent(); 
      BufferedReader reader = new BufferedReader(new InputStreamReader(in)); 
      StringBuilder str = new StringBuilder(); 
      String line = null; 
      while((line = reader.readLine()) != null) 
        { 
         str.append(line + "\n"); 
        } 
      in.close(); 
      result = str.toString(); 
      updateData(result);   
     } 
     catch(Exception ex) 
     { 
      //responsetxt.setText(ex.getMessage()); 
     } 
     return result; 
    } 
    public void updateData(String result) 
    { 
     try  
     { 
      JSONObject json = new JSONObject(result); 
      JSONArray ja; 
      json = json.getJSONObject("responseData"); 
      ja = json.getJSONArray("results"); 

      int resultCount = ja.length(); 

      for (int i =0; i<resultCount; i++) 
      { 
       JSONObject resultObject = ja.getJSONObject(i); 
       result = resultObject.toString(); 

      } 

     } 
     catch(Exception ex) 
     { 
      //responsetxt.setText(ex.getMessage()); 
     } 
    } 
+0

你有沒有在AndroidManifest.xml中添加網絡許可?你可以發佈你的LogCat嗎? –

+0

謝謝你的回覆。不,我沒有在我的Manifest中添加任何東西。任何幫助將不勝感激。 – Adnama

+0

'String result = EntityUtils.toString(response);'簡化了你寫的內容(從響應緩衝區讀取數據並創建一個字符串)。 –

回答

0

添加字符串

<uses-permission android:name="android.permission.INTERNET"></uses-permission> 

在AndroidManifest.xml後,該行之後

<uses-sdk android:minSdkVersion="#" /> 

其中#表示你的minSdkVersion

編輯:試圖改變這一點:

 URL url = new URL(query); 
     URI uri = new URI(url.getProtocol(), url.getHost(),url.getPath(), url.getQuery(),null); 
     HttpGet request = new HttpGet(uri); 

與此:

 URI uri = new URI(query); 
     HttpGet request = new HttpGet(); 
     request.setUri(uri); 
+0

我加了這個,但還是沒有任何反應。 :( <使用權限android:name =「android.permission.INTERNET」/> – Adnama

+0

您可以將錯誤日誌添加到您的問題嗎? –

+0

錯誤日誌,我有未處理的事件循環異常, 錯誤 週三11月2 9點59分十四秒CET 2011 未處理的事件循環異常 org.eclipse.swt.SWTException:未能執行可運行(java.lang中。 NullPointerException) \t at org.eclipse.swt.SWT.error(SWT.java:4282) \t at org.eclipse.swt.SWT.error(SWT.java:4197) \t在org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:138) \t在org.eclipse.swt.widgets.Display.runAsyncMessages(Display.java:4140)在org.eclipse.swt \t .widgets.Display.readAndDispatch(Display.java:3757) \t at org.eclipse.ui.internal.Workbench.runEventLoop(Workbenc ..... – Adnama

相關問題