deprecate شدن HttpClient و اجر نشدن کد استاد در اموزش 11
سلام دوستان در ابتدای بخش 11 اموزش استاد یک ابجکت از کلاس HttpClient می سازند که بنده وقتی در حال پیاده سازی آن کد بودم اروری دریافت کردم مبنی بر اینکه HttpClient دپریکیت شده است.حال چند سوال برای بنده پیش آمده است که ممنون می شوم راهنمایی بفرمایید.
1-اگر از یک کلاس که دپریکیت شده است (یعنی گوگل توصیه می کند که از ان استفاده نکنیم) استفاده کنیم چه مشکلی به وجود می آید؟
2-با سیرچ کردن می توان راه حل سوالی مانند سوال بالا را یافت ولی ایا در خود سایت گوگل قسمتی وجود دارد که کلاس های دپریکیت شده به همراه علت و به همراه جایگزین را یک جا آورده باشد؟
3-تا انجا که استاد می خواهند مقدار statusLine ریخته شده در یک متغیر از نوع int به نام کد را با استفاده از Log نمایش دهند هم بنده کد ها را مانند استاد وارد کردم ولی ارور می گیرم و برنامه اجرا نمی شود ایا ممکن است دلیل این ارور این باشد که از کلاسی که deprecate شده است استفاده می کنم؟
ممنون بابت راهنمایی
اشکالی که کد استاد را نمی توانستم درست اجرا کنم به دلیل ادرس HttpGet بود بعد از اصلاح اجرا شد .دوستان اگر اطلاعاتی در مورد کلاس جایگزین HttpClient دارند لطفا به بنده هم اطلاع دهند . ممنون
آقا کلا تو اندروید استودیو میزنم HttpClient هیچی نمیاره راهنمایی کنید اگه چیزی میدونین خیلی برام واجبه
HttpClient جز پکیج Apache هست و ربطی به گوگل و اندروید نداره ، اما در API 22 اندروید از Apache 4.3 استفاده شده ، که در این ورژن از Apache دیگه از HttpClient پشتیبانی نمیشه و Depricate شده . منبع
حالا طبق چیزی که خود Apache گفته باید از HttpClientBuilder و یا از CloseableHttpClient استفاده کنید .
راه دیگه هم اینکه از نسخه 21 به قبل اندروید رو در پروژه به کار ببرید .
دیدم تاپیک بالا اومده گفتم این قسمتو بگم راه حلشو
دوستان میتونید این خط رو به gradle برنامتون اضافه کنید
dependencies { ... compile 'org.jbundle.util.osgi.wrapped:org.jbundle.util.osgi.wrapped.org.apache.http.client:4.1.2' }
من هم تازه رسیدم به قسمت بازیابی سرور ولی با HTTPClient مشکل دارم . اولش این دستور رو اضافه کردم => 'useLibrary 'org.apache.http.legacyولی خطایی که میده از این نوع هست => unable to start activity componentinfo و بعدش این دلیل رو میاره => Caused by: android.os.NetworkOnMainThreadException
به همین دلیل یک Thread تعریف کردم و کدها رو توش نوشتم و حالا وقتی اجرا می کنم توی LOG کدی مربوط به HTTP Status Code هست رو بهم عدد 405 نشون میده . چه راه حلی برای رفعش وجود داره ؟ اضافه کردن یه سری دستورات رو توی gradle رو هم امتحان کردم ولی نتیجه نداد.
برای حل این مشکل بعد از setContent در اکتیویتی مورد نظر این کد رو وارد کنید:
if (android.os.Build.VERSION.SDK_INT > 9) {
StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
StrictMode.setThreadPolicy(policy);
}
سلام یک بار توی یکی از تاپیک ها گفتم الانم میگم دوباره
در نسخه ی Android Studio 1.4 و به بعدش دیگه از متد های Http گوگل پشتیبانی نمیگنه، و شما باید از وبسرویس هایی نظیر Volley استفاده بکنید
برای کانکت شدن به اینترنت از RequestQueue باید استفاده کنید
این خط رو به gradle اضافه کن ، تو بخش android زیر buildToolsVersion .
useLibrary 'org.apache.http.legacy'
. بعدشم این چند خط کد رو به ActivityMain پروژت اضافه کن مشکلت حل میشه.
if (android.os.Build.VERSION.SDK_INT > 9) { StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build(); StrictMode.setThreadPolicy(policy); }
دوستان توجه کنید که دیپرکت شدن یک متد به خاطر مشکلاتی هست که داشته، درسته قابل استفاده هست ولی به هیچ وجه پیشنهاد نمیشه استفاده بشه.
پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .