Androidでgetリクエストを行うコードを記述しましたが、次のようなエラーが発生します。
07-07 21:12:39.674: E/AndroidRuntime(2409): at android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1117)
だから私はAsyncTaskを使わなければならないことを読んだ。やったよ。あるときはうまくいきましたが、次回アプリを実行すると、再びそのエラーが発生しました。
これは私のコードです:
package app.teksty;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import org.apache.http.HttpResponse;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.DefaultHttpClient;
import android.os.AsyncTask;
import android.os.Bundle;
import android.app.Activity;
import android.util.Log;
import android.view.Menu;
public class MainActivity extends Activity {
private class HttpGetRequest extends AsyncTask<String, Integer, Void>
{
private InputStream content;
@Override
protected Void doInBackground(String... params) {
String url = params[0];
Log.i("[GET REQUEST]", "STARTED");
try {
HttpClient httpclient = new DefaultHttpClient();
HttpResponse response = httpclient.execute(new HttpGet(url));
content = response.getEntity().getContent();
} catch (Exception e) {
Log.e("[GET REQUEST]", "Network exception", e);
}
return null;
}
@Override
protected void onPostExecute(Void result) {
super.onPostExecute(result);
BufferedReader r = new BufferedReader(new InputStreamReader(content));
StringBuilder respond = new StringBuilder();
String line;
try {
while ((line = r.readLine()) != null) {
respond.append(line);
}
Log.i("[GET REQUEST]", respond.toString());
} catch (IOException e) {
Log.e("[GET REQUEST]", "", e);
}
}
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
new HttpGetRequest().execute("http://www.google.pl");
setContentView(R.layout.activity_main);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.activity_main, menu);
return true;
}
}
私が間違ったこと、またはこの問題を解決するために何をしなければならないのですか?