کلیدستان

نسخه‌ی کامل: مشکل در دریافت اطلاعات از یک صفحه اینترنتی
شما در حال مشاهده نسخه آرشیو هستید. برای مشاهده نسخه کامل کلیک کنید.
سلام دوستان
من یه برنامه دارم که میخوام خط مثلا 12 سورس کد یه صفحه رو توی یه رشته ذخیره کنم .
با این کدا ی زیر سورس کد رو میگیرم اما ارور android.os.NetworkOnMainThreadException میده .
کد پی‌اچ‌پی:
try {
            
HttpClient httpclient = new DefaultHttpClient();
            
HttpGet httpget = new HttpGet(mainURL);
            
HttpResponse response httpclient.execute(httpget); //توی این خط ارور میگیره
            
HttpEntity entity response.getEntity();
            
InputStream is entity.getContent();
            
BufferedReader reader = new BufferedReader(new InputStreamReader(is"iso-8859-1"), 8);
            
StringBuilder sb = new StringBuilder();
            
String line null;
            
int x 0;
            while ((
line reader.readLine()) != null) {
                
x++;
                if (
== 12) {
                    
sb.append(line);
                }
            }
            
String resString sb.toString();
            
source resString;
            
is.close();
            
Toast.makeText(context,"source get",Toast.LENGTH_SHORT).show();
            
Toast.makeText(context,resString,Toast.LENGTH_SHORT).show();
            
getDlURL(resStringcontext);
        } catch (
Exception e) {
            
Toast.makeText(context,"source not get",Toast.LENGTH_SHORT).show();
            
e.printStackTrace();
        } 
چک کنید اجازه دسترسی به اینترنت رو در منیفست گرفتید؟
بعدش باید این قطعه کد رو در یک thread  جداگونه (کارگر) اجرا کنید.مباحث Thread  رو بخونید.
(۱۳۹۴/۰۸/۳۰, ۰۳:۰۳ ق.ظ)'داش بهروز' نوشته: [ -> ]چک کنید اجازه دسترسی به اینترنت رو در منیفست گرفتید؟
بعدش باید این قطعه کد رو در یک thread  جداگونه (کارگر) اجرا کنید.مباحث Thread  رو بخونید.

 

بله دسترسی اینترنت رو در منیفست گذاشتم
این کد ها داخل یه متد توی یه بردکاست رسیور هست .
ولی ترد جدا نداره . مشکل از این هست ؟

 
دوست عزیز شما باید عملیات زمان بر رو روی ترد جداگونه انجام بدید نه روی ترد به اصطلاح پدر که Ui  رو در برداره.شما باید یک ترد جداگونه باز کنید..یا از Asynk استفاده کنید و دستورات خودتون توی قسمت doingBackGround  انجام بدید.