منسوخ شدن کلاس httpresponse
من امروز داشتم قسمت 12 آموزش های اندروید رو نگاه میکردم. کد ها رو که وارد اندروید استودیو کردم(httpclient) دیدم اصلا همچین کلاسی وجود نداره. توی اکلیپس هم تست کردم بازم نشد. به نظر میاد این کلاس در api23 منسوخ شده چون اصلا نشد که نشد. حالا باید چی کار کنم. لطفا کمکم کنید. اگه جایگزین مناسبی داره لطفا بهم یاد بدید. ممنون.
***بروزرسانی***
حالا get status code رو چجوری بگیرم؟
جای httpclient از URLConnection استفاده میشه.
این کدها معادل کدهای آموزشها هستن و همون کارو میکنن:
public static String getContents(String url) { String contents = ""; try { URLConnection conn = new URL(url).openConnection(); InputStream in = conn.getInputStream(); contents = convertInputStreamToString(in); } catch (MalformedURLException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } return contents; } 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; }
توی این مثال یعنی اضافه میکنه مقدار n رو به StringBuilder
بله شما درست میفرمایید ولی من خیلی سرچ کردم و متاسفانه چیزی نتونستم پیدا کنم. حالا درباره همین کد
while((line = reader.readLine())!=null){
sb.append(line).append("n");}
من مشکلم اینه که دقیقا همین کد رو استاد نوشتن ولی دیگه
.append("n");
نداره به این صورت:
while((line = reader.readLine())!=null){
sb.append(line);}
من میخواستم بدونم این کدی که اضافه شده چی هست. میدونم اضافه میکنه ها فقط نمیدونم برای چی هست.
ممنون
آهان پس یعنی این n\ هست نه n دیگه؟ درسته؟
بسیار خب. حالا برای httpResponse چی کار کنم؟ ممنونم که کمکم میکنید.
روی این خط از کد زیر ارور NetworkOnMainThreadException میده. دلیلش چیه؟
InputStream in= conn.getInputStream();
سلام آره کلاس منسوخ شده (ولی خب میشه استفاده کرد) و البته بهتر است که از روش دوستمون Rabbit استفاده بشه.
و البته نکته مهم اینکه در api های 4 به بعد اندروید اجازه نمیده که توی thread اصلی مستقیما کانکشن بزنی و اگه دوستان همین کد را امتحان کنند، در عین اینکه درسته ولی برنامه خطا میده و بسته میشه. (مشکلی که برای من بود)
هر چند که توصیه نمیشه ولی فعلا برای اینکه بتونید آموزشها را ادامه بدید میتونید این کد را در متد onCreate قرار بدید و بطور مستقیم اون کدها را اجرا کنید:
StrictMode.ThreadPolicy policy = new StrictMode. ThreadPolicy.Builder().permitAll().build(); StrictMode.setThreadPolicy(policy);
سلام دوستان
من یه پروژه ای جهت دانلود ، توی اندروید 6 اجرا کردم، پیغام logcat این خطا اومد
W/System: ClassLoader referenced unknown path: /system/framework/tcmclient.jar
W/System: ClassLoader referenced unknown path: /system/framework/com.qualcomm.qti.GBAHttpAuthentication.jar
اندورید 2 تا 5 خوب کار می کنه، جز 6
علتش چیه؟
سلام
در نسخه ی Android Studio 1.4 و به بعدش دیگه از متد های Http گوگل پشتیبانی نمیگنه، و شما باید از وبسرویس هایی نظیر Volley استفاده بکنید
برای کانکت شدن به اینترنت از RequestQueue باید استفاده کنید
urlارور میده چجوری برطرفش کنم؟چگونه کتابخانه volleyو غیره را استفاده کنم؟
public static String getContents(String url) {
String contents = "";
try {
final URLConnection conn = new URL(url).openConnection();
new Thread(new Runnable() {
@Override
public void run() {
InputStream in = conn.getInputStream();
}
}).start();
contents = convertInputStreamToString(in);
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return contents;
}
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;
}
پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .