منسوخ شدن کلاس httpresponse
مدیریت گفتگو
من امروز داشتم قسمت 12 آموزش های اندروید رو نگاه میکردم. کد ها رو که وارد اندروید استودیو کردم(httpclient) دیدم اصلا همچین کلاسی وجود نداره. توی اکلیپس هم تست کردم بازم نشد. به نظر میاد این کلاس در api23 منسوخ شده چون اصلا نشد که نشد. حالا باید چی کار کنم. لطفا کمکم کنید. اگه جایگزین مناسبی داره لطفا بهم یاد بدید. ممنون.
***بروزرسانی***
حالا get status code رو چجوری بگیرم؟
پاسخها 13
مشاهده پاسخ صحیحجای 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;
}
نظرات
میشه بگید این کد زیر چی کار میکنه؟ ممنون.
.append("n");
نظرات
توی این مثال یعنی اضافه میکنه مقدار n رو به StringBuilder
نظرات
بله شما درست میفرمایید ولی من خیلی سرچ کردم و متاسفانه چیزی نتونستم پیدا کنم. حالا درباره همین کد
while((line = reader.readLine())!=null){
sb.append(line).append("n");}
من مشکلم اینه که دقیقا همین کد رو استاد نوشتن ولی دیگه
.append("n");
نداره به این صورت:
while((line = reader.readLine())!=null){
sb.append(line);}
من میخواستم بدونم این کدی که اضافه شده چی هست. میدونم اضافه میکنه ها فقط نمیدونم برای چی هست.
ممنون
نظرات
آهان پس یعنی این n\ هست نه n دیگه؟ درسته؟
نظرات
روی این خط از کد زیر ارور 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 باید استفاده کنید
نظرات
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;
}
نظرات
پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .
نظرات