-2

投稿リクエストを実行しようとしています。機密データが含まれているため、サイトを検閲しました.コードは次のとおりです。

        HttpClient httpclient = new DefaultHttpClient();   
    HttpPost httppost = new HttpPost("http://www.someaddress.com"); 
        // Add your data   
        List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(1);   
        nameValuePairs.add(new BasicNameValuePair("sdata", ""));

        try {
                httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs,HTTP.UTF_8));
                Log.d("MyTag", "works till here.");
                try {
                    HttpResponse response = httpclient.execute(httppost);
                   // String responseBody = EntityUtils.toString(response.getEntity());
             //       Log.d("MyTag", responseBody);
                } catch (ClientProtocolException e) {
                    e.printStackTrace();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            } catch (UnsupportedEncodingException e) {
                e.printStackTrace();
            }

その行でクラッシュします:

  HttpResponse response = httpclient.execute(httppost);

これは本当に私に何も言わないlogcatです: http://pastebin.com/F0YAiNLD

何が問題なのですか?なぜクラッシュするのですか?この C# コードを Java に変換しようとしています。C# コードは機能しますが、JAVA コードは機能しません。

C# コードは次のとおりです。

        System.Text.UTF8Encoding encoding=new System.Text.UTF8Encoding();
    string pData = "";
    byte[] sdata = encoding.GetBytes(pData);
    HttpWebRequest request = new HttpWebRequest(new Uri("http://www.someaddress.com"));
    request.ContentType="application/x-www-form-urlencoded";
    request.ContentLength = sdata.Length;
    Stream nStream=request.GetRequestStream();
    nStream.Write(sdata,0,sdata.Length);
    nStream.Close();
    HttpWebResponse response = 
    (HttpWebResponse) request.GetResponse();
4

1 に答える 1

1

私は Android 開発者ではありませんが、「Android NetworkOnMainThreadException」を Google で簡単に検索すると、メイン イベント スレッドでネットワーク アクションを実行しようとするとこの例外がスローされることがわかります(名前はわかりやすい名前です)。バックグラウンド スレッドでこれらのタイプのネットワーク呼び出しを行っている

通常、GUI アプリでは、メイン アニメーション ループをブロックするため、ブロックできるメイン スレッド (ネットワーク HTTP 呼び出しなど) で作業を行うことはお勧めできません。

于 2012-09-26T18:21:02.317 に答える