ورود

View Full Version : خطای android.os.NetworkOnMainThreadException



mylove_iman
دوشنبه 10 فروردین 1394, 11:11 صبح
سلام دوستان برنامه اتصال من به اینترنت من هیچی خروحی نشون نمیده یعنی چشه؟


این کد Webserver
package info.androidhive.slidingmenu;


import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.ArrayList;
import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.HttpClient;
import org.apache.http.client.entity.UrlEncodedFormEntity ;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.DefaultHttpClient;
import android.util.Log;




public class Webservice {


public static interface listener {


public void onReceived(String string);
}


protected static String result;




public static String readUrl(final String url, final ArrayList<NameValuePair> params, final listener listener) {


Thread thread = new Thread(new Runnable() {


@Override
public void run() {
try {
HttpClient client = new DefaultHttpClient();
HttpPost method = new HttpPost(url);


if (params != null) {
method.setEntity(new UrlEncodedFormEntity(params));
}
HttpResponse response = client.execute(method);


InputStream inputStream = response.getEntity().getContent();


result = convertInputStreamToString(inputStream);
Log.i("LOG", "result = " + result);
if (listener != null) {
listener.onReceived(result);
}


}
catch (ClientProtocolException e) {
Log.v("LOG", "readURL1" + e);
}
catch (IOException e) {
Log.i("LOG", "readURL2" + e);
}


}
});
thread.start();
return result;
}




private static String convertInputStreamToString(InputStream inputStream) {
try {
BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream));
StringBuilder builder = new StringBuilder();


String line = "";


while ((line = reader.readLine()) != null) {
builder.append(line);
}


return builder.toString();
}
catch (IOException e) {
e.printStackTrace();
}


return null;
}
}
اینم تابع فراخوانیم . اینجا چاپ که میکنم اطلاعاتمو نشون میده ولی وقتی آخر تابع چاپ میزنم هیچی برام برنمیگردونه. کامل خالی برمیگردونه .نمیدونم چشه

private void populateFromServer() {
// String url = "http://192.168.1.121/restoran/service.php";
ArrayList<NameValuePair> params = new ArrayList<NameValuePair>();


params.add(new BasicNameValuePair("action", "read"));
params.add(new BasicNameValuePair("filter", lastFilter));
params.add(new BasicNameValuePair("sort", lastSort));


//String result = Webservice.readUrl(url, params);


Webservice.listener listener = new listener() {


@Override
public void onReceived(String data) {
/// do stuff ...
}
};
String result = Webservice.readUrl("http://192.168.1.121/restoran/service.php", params, listener);
// Log.i("LOG", "result = " + result);


if (result != null) {
try {
applications.clear();
// Log.i("LOG", "result = " + result);
JSONArray apps = new JSONArray(result);
Log.i("LOG", "log = " + apps.length());
for (int i = 0; i < apps.length(); i++) {
JSONObject object = apps.getJSONObject(i);
StructApplication application = new StructApplication();
application.id = object.getString("app_id");
application.name = object.getString("app_name");
application.price = object.getInt("app_price");
application.logoUrl = object.getString("app_logoUrl");
application.description = object.getString("app_description");
applications.add(application);
}


adapter.notifyDataSetChanged();
}
catch (JSONException e) {
e.printStackTrace();
}
}

mylove_iman
دوشنبه 10 فروردین 1394, 11:12 صبح
البته از ترد بخاطر رفع خطای NetworkOnMainThreadException استفاده کردم.خطا رفع شده ولی چیزی نمایش داده نمیشه

mylove_iman
دوشنبه 10 فروردین 1394, 11:14 صبح
من قسمت های مختلف چاپ زدم.داخل ترد که چاپ زدم اطلاعات را درست نشون میده ولی بیرون ترد و داخل تابع هر جا چاپ میزنم خالی نشون میدهمن زیاد ترد را نمیفهممآیا ترد بعد از کارش همه متغییرها را خالی میکنهوای ممنون میشم راهنمایی بفرمایید

mylove_iman
دوشنبه 10 فروردین 1394, 12:48 عصر
دوستان درست شد کارم .مرسی

reza_pnu_ney
سه شنبه 19 مرداد 1395, 11:39 صبح
خب لااقل راه حل رو بنویس تا افرادی که بعد از یه مدت به همچین مشکلی میخورن ، این راه کمکشون کنه.
:)

سیدسبحان
چهارشنبه 07 مهر 1395, 17:45 عصر
بابا چرا راه حل نذاشتی!
مام همین مشکل رو داریم خب....:گریه::گریه::گریه:

سیدسبحان
پنج شنبه 08 مهر 1395, 09:46 صبح
حل شد:
جواب:
منبع : http://answers.uncox.com/android/question/20099/%D8%A7%D8%B3%D8%AA%D9%81%D8%A7%D8%AF%D9%87-%D8%A7%D8%B2-%DA%A9%D8%AF-json-%D8%AF%D8%B1-list-view-%DB%8C%DA%A9-%D9%85%D8%B4%DA%A9%D9%84-%D8%B9%D8%AC%DB%8C%D8%A8-