2011-07-14 10 views
1

私はサーバーからの応答を要求しようとしていますが、 "HttpResponse response = client.execute(request);"を使用すると、プログラムは例外ケースに入ります。ここでHttpResponseを使用中に例外を取得するresponse = client.execute(request);

は私のコードです:

機能サーバからの応答を取得するため

パブリック文字列executeHttpGet(文字列名、文字列のパスワード)の活動に使用される例外{

BufferedReader in = null; 
    try { 
     HttpClient client = new DefaultHttpClient(); 
     HttpGet request = new HttpGet(); 
     request.setURI(new URI("http://emapzoom.com/setting/device_login"+ "?device_id=" +password+ "&login_name="+ username)); 



     HttpResponse response = client.execute(request); 
     in = new BufferedReader (new InputStreamReader(response.getEntity().getContent())); 
     StringBuffer sb = new StringBuffer(""); 
     String line = ""; 
     String NL = System.getProperty("line.separator"); 
     while ((line = in.readLine()) != null) { 
      sb.append(line + NL); 
     } 
     in.close(); 
     String page = sb.toString(); 
     System.out.println(page); 
     return page; 
    } finally { 
     if (in != null) { 
      try { 
       in.close(); 
      } catch (IOException e) { 
       e.printStackTrace(); 
      } 
     } 
    } 
} 

コード

をスローします
 try{ 

      test=executeHttpGet(name,pass); 

     }catch(Exception e){ 

     } 

実行すると、プログラムはcatch bloを入力しますck!

私を助けてください! thxで事前に!

+4

例外を記録してください(http://developer.android.com/reference/android/util/Log.htmlを参照)、あなたの質問にスタックトレース全体を追加してください。つまり、インターネットのアクセス許可が不足している可能性があります(http://developer.android.com/reference/android/Manifest.permission.html#INTERNETを参照)。 – Mike

答えて

2

Android> = Honeycombのいずれのバージョンに対してもビルドしている場合、メインスレッドでネットワークコールを行うことはできません。これを非同期タスクに入れ、それが機能するかどうか確認してください。

0

dell116の回答が正しいです。

私はICSに同じ問題を抱えていたし、このコードで非同期にそれを解決:

private void getResponseThread(final String url) { 
    new Thread(new Runnable() { 
     public void run() { 
      String cadHTTP = getResponse(url); 
      Message msg = new Message(); 
      msg.obj = cadHTTP; 
      handlerHTTP.sendMessage(msg); 
     } 
    }).start(); 
} 

private String getResponse(String url) { 
    HttpClient httpClient = new DefaultHttpClient(); 
    HttpGet del = new HttpGet(url); 
    del.setHeader("content-type", "application/json"); 

    String respStr; 
    try { 
     HttpResponse resp = httpClient.execute(del); 
     respStr = EntityUtils.toString(resp.getEntity()); 
    } catch(Exception ex) { 
     Log.e("RestService","Error!", ex); 
     respStr = ""; 
    } 

    Log.e("getResponse",respStr); 
    return respStr; 
} 

private Handler handlerHTTP = new Handler() { 
    @Override 
    public void handleMessage(Message msg) { 
     String res = (String) msg.obj; 
     //CONTINUE HERE 
     nexTask(res); 
    } 
}; 

よろしく! :)

関連する問題