I know this question has been asked for several times, but I am helpless now.
I have a php webpage at localhost that echo "Hello". (working perfect at localhost). I have following code that displays response from localhost web page to TextView in my app.
tv = (TextView) findViewById(R.id.txtTest);
InputStream is = null;
String result = "";
String url = "http://10.0.2.2/android/try.php";
HttpClient httpclient = new DefaultHttpClient();
try {
HttpPost httppost = new HttpPost(url);
HttpResponse response = httpclient.execute(httppost);
Log.d("myapp", "response " + response.getEntity());
HttpEntity entity = response.getEntity();
is = entity.getContent();
String st = EntityUtils.toString(response.getEntity());
} 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, "UTF-8"), 8);
StringBuilder sb = new StringBuilder();
String line = null;
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());
}
tv.setText(result.toString());
I am getting following error (LogCat).
09-24 13:34:42.654: E/log_tag(2032): Error in http connection android.os.NetworkOnMainThreadException
09-24 13:34:42.654: E/log_tag(2032): Error converting result java.lang.NullPointerException
P.S I have added Internet permission in Manifest.
You should do network operations (connection and so on) from a different thread than the main (UI) thread. That's what the error android.os.NetworkOnMainThreadException
you are getting means.
You should look either into ASyncTask or Thread to do that.
Read this article too...
Replace the code you currently have with this:
AsyncTask<Void,Void,Void> my_task = new AsyncTask<Void,Void,Void>() {
@Override
protected void onPostExecute() {
TextView tv = (TextView) findViewById(R.id.txtTest);
tv.setText(result.toString());
}
@Override
protected Void doInBackground(Void... voids) {
InputStream is = null;
String result = "";
String url = "http://10.0.2.2/android/try.php";
HttpClient httpclient = new DefaultHttpClient();
try {
HttpPost httppost = new HttpPost(url);
HttpResponse response = httpclient.execute(httppost);
Log.d("myapp", "response " + response.getEntity());
HttpEntity entity = response.getEntity();
is = entity.getContent();
String st = EntityUtils.toString(response.getEntity());
} 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, "UTF-8"), 8);
StringBuilder sb = new StringBuilder();
String line = null;
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());
}
}
}.execute();