0

インターネットに接続し、指定された Web サイトからデータを読み取ることができる Android アプリを開発しようとしています。ただし、エミュレーターでプログラムを実行しても何も起こりません。誰かが私が何をする必要があるかについて私を導くのを手伝ってもらえますか? これが私のコードです

public class HttpExaplme extends Activity {
TextView httpStuff;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.httpex);
    httpStuff = (TextView) findViewById(R.id.tv_http);
    GetHttpEx test = new GetHttpEx();
    String returned;
    try {
        returned = test.getInternetData();
        httpStuff.setText(returned);
    } catch (Exception e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

}

public class GetHttpEx {

public String getInternetData() throws Exception
{
    BufferedReader in = null;
    String data = null;
    try{
        HttpClient client = new DefaultHttpClient();
        URI website = new URI("http://www.mybringback.com");
        HttpGet request = new HttpGet();
        request.setURI(website);
        HttpResponse response = client.execute(request);
        in = new BufferedReader(new InputStreamReader(response.getEntity().getContent()));
        StringBuffer sb = new StringBuffer("");
        String l ="";
        String nl= System.getProperty("line sperator");
        while((l = in.readLine())!=null)
        {
            sb.append(l + nl);
        }
        in.close();
        data = sb.toString();
                return data;
       }
    finally
    {
        try{
            if(in != null)
                {
                    in.close();
                    return data;
                }
        }
        catch(Exception e){
            e.printStackTrace();
        }

    }
}
4

2 に答える 2

0

まず、エミュレーターがhttp://www.mybringback.comに接続できるかどうかを確認します。これを行うには、このサイトを Android ブラウザーで開きます。企業のファイアウォールは、デフォルトでエミュレータのリクエストをブロックする場合があります。

次に、@Gabe が言ったように、ネットワーク リクエストを AsyncTask にラップします。ここ: http://developer.android.com/reference/android/os/AsyncTask.html

これらの手順の後、ここに戻ってください。スタックトレースを投稿してください。これは logcat (コマンド ラインで adb -e logcat) で表示できます。

HTH

編集: マニフェストに android.permission.INTERNET を設定しましたか?

于 2013-03-21T13:26:36.853 に答える
0

UI スレッドで HTTP リクエストを実行しているため、クラッシュしています。これは許可されていません。アプリが応答しなくなるため、例外がスローされます。すべての HTTP 要求は、スレッドまたは AsyncTask で行う必要があります。

于 2013-03-21T13:14:45.730 に答える