0

私はAndroidプログラミングの初心者です。リンクに接続して応答を取得しようとしています。例:https ://stackoverflow.com/

以前HttpResponseは応答を取得してから、EntityUtils.toString(rp.getEntity())関数を使用して応答を文字列に変換していました。私のコードはエミュレーターで完全に実行されていますが、実際のデバイス、つまりSamsung Galaxy Tab 7.0でプロジェクトを実行しようとすると、実行されず、「残念ながら...が停止しました」と表示されます。

なぜこれが起こっているのか、そして解決策は何ですか?コードは次のとおりです。

    public class MainActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        TextView txt = (TextView) findViewById(R.id.textView1);
        String pageStr = "***";

        try
        {
            HttpClient hc = new DefaultHttpClient();
            HttpPost post = new HttpPost("https://stackoverflow.com/");

            HttpResponse rp = hc.execute(post);

            if(rp.getStatusLine().getStatusCode() == HttpStatus.SC_OK)
            {
                pageStr = EntityUtils.toString(rp.getEntity());
            }
            else
            {
                Toast.makeText(getApplicationContext(), "Failed!!", Toast.LENGTH_LONG).show();
            }
        }catch(IOException e){
            e.printStackTrace();
        }  

        txt.setText(pageStr);

    }
}

manifestファイルで次の権限を使用しました。

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

この問題に関するヘルプや提案は大歓迎です。

4

1 に答える 1

0

UI スレッドでインターネットにアクセスしようとしているため、機能しません。

次のリンクを読んでください。別の(非UI)スレッドでインターネットを操作する方法が記載されています

于 2013-03-18T18:50:23.217 に答える