ورود

View Full Version : خطا در دریافت سورس وبسایت



majid_alamdary
دوشنبه 05 اسفند 1392, 10:13 صبح
سلام
من یه برنامه ساده می خوام بنویسم که یک وبسایت رو فراخوانی کنم و سورس html سایت رو بخونم و پردازش کنم از کد زیر استفاده می کنم ولی exception میده، مجوز دسترسی به اینترنت رو هم دادم. اگه کد دیگه ای هست که از این بهتر باشه می تونین برام اینجا بزارین؟


try {
URL url = null;
URLConnection connection = null;
String inputLine = "";
url = new URL("http://google.com");
connection = url.openConnection();


DataInputStream inStream = new DataInputStream(connection.getInputStream());


while ((inputLine = inStream.readLine()) != null) {
tv.append(inputLine);
}
inStream.close();
} catch (Exception e) {
tv.append("MalformedURLException: " + e.getMessage());
}

rubiks.kde
دوشنبه 05 اسفند 1392, 10:21 صبح
متن خطا رو قرار بدید

majid_alamdary
دوشنبه 05 اسفند 1392, 10:25 صبح
متاسفانه در e.getMessage مقدار null رو برمی گردونه!

majid_alamdary
دوشنبه 05 اسفند 1392, 10:25 صبح
در قسمت DataInputStream مشکل ایجاد می کنه

majid_alamdary
دوشنبه 05 اسفند 1392, 11:02 صبح
راه حل رو پیدا کردم برای اندرویدهای ویرایش بالای 3 باید کد زیر رو حتما در هنگام OnCreate باید اضافه کرد:


StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().buil d();



StrictMode.setThreadPolicy(policy);

rubiks.kde
دوشنبه 05 اسفند 1392, 11:41 صبح
شما کد بالا رو توی ترد جدا از ترد main استفاده نمیکردید ؟
یعنی این کد رو همین طور توی onCreate مینوشتید؟

اگه این طور باشه استفاده از این روش شما هم درسته (راه حل پست قبل) ولی باید امور شبکه رو به ترد جدا ببرید.

majid_alamdary
سه شنبه 06 اسفند 1392, 11:01 صبح
بله فرمایش شما درسته، من این مورد رو نمیدونستم ولی با کدی که گذاشتم میشه این کار رو تو ترد اصلی انجام داد.

rubiks.kde
سه شنبه 06 اسفند 1392, 12:17 عصر
بله فرمایش شما درسته، من این مورد رو نمیدونستم ولی با کدی که گذاشتم میشه این کار رو تو ترد اصلی انجام داد.

در کل نباید اموری که نیاز به زمان زیاد داره رو توی ترد اصلی انجام داد.