2012-01-06 21 views
0

HTTP POSTを使用するクラスを使用しています&データベースからのデータをphp/json経由で取得し、文字列に変換しています。HTTP POST接続でエラーが発生しました

LogCatに "Error in http connection android.os.NetworkOnMainThreadException"が表示されています。エミュレータでこれをテストしており、正しいポートアドレスを使用しています。ポートがアプリケーションの他の部分(LocalhostからHTMLを読み込む)でうまく動作するので、私はこれを知っています。私がデスクトップブラウザでphpファイルを実行すると、正常に動作します。また、10.0.2.2 &のmySQLでは、ユーザがphpログインファイルで設定したパーミッションが正しく設定されていることも知っています。

私の質問は:誰もが同じ問題を横切って来たのですか?もしそうなら、問題が何であったか、他に何を探すべきかを考えましたか?

あなたの助けにThnx!

public void loadQuery(String p) { 

     String qO = getIntent().getStringExtra("QUERY_ORDER"); 

     ArrayList<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(); 
     // http post 
     try { 
      HttpClient httpclient = new DefaultHttpClient(); 
      // HttpPost httppost = new HttpPost("http://10.0.2.2/Andaero/php/" + 
      // p + qO + ".php"); 

      //Hard coded the php link to make sure --> 

      HttpPost httppost = new HttpPost(
        "http://10.0.2.2/Andaero/php/regulatory_list_ASC.php"); 

      httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs)); 
      HttpResponse response = httpclient.execute(httppost); 
      HttpEntity entity = response.getEntity(); 
      is = entity.getContent(); 
     } catch (Exception e) { 
      Log.e("log_tag", "Error in http connection " + e.toString()); 
     } 

     // convert response to string 
     try { 
      BufferedReader reader = new BufferedReader(new InputStreamReader(
        is, "iso-8859-1"), 8); 
      sb = new StringBuilder(); 
      sb.append(reader.readLine() + "\n"); 

      String line = "0"; 
      while ((line = reader.readLine()) != null) { 
       sb.append(line + "\n"); 
      } 
      is.close(); 
      result = sb.toString(); 
     } catch (Exception e) { 
      Log.e("log_tag", "Error converting result " + e.toString()); 
     } 

     setListAdapter(new QueryAdapter(this, result)); 
    } 

答えて

2

あなたのアプリのメインスレッドでネットワーク操作を行っている可能性があります(その例外がスローされる一般的な理由です)。

これは絶対に行わないでください。メインスレッドはユーザーとのやりとりにのみ使用する必要があり、すべてのネットワーク操作をセカンダリスレッドにオフロードする必要があります(AsyncTaskなど)。詳細情報については

、良い読み取りは次のとおりです。 http://developer.android.com/guide/practices/design/responsiveness.html

+0

のthnx。これを別のスレッドに配置する方法の例を示してください。 - 私はまだそれをやりました。 – CelticParser

関連する問題