Behrad Ravanbod 28 ارسال شده در ۲۸ تیر ۱۳۹۷ گزارش اشتراک گذاری ارسال شده در ۲۸ تیر ۱۳۹۷ (ویرایش شده) با عرض سلام خدمت تمامی دوستان. در این آموزش ساده میخوام که بهتون بگم چطور یک HTTPS Request ارسال کنید. ارسال درخواست معمولی http کار راحتیه و مشکلی نداره اما اگه سعی کرده باشید به یک سرور یا url که https هستش درخواست بفرستین،مشکل و ارور های عجیبی ببینید.ارور های مثل Certificate یا ... راه حل خیلی ساده ای داره. من تو یک خط بگم چطوری یک SSL رایگان برای سرور بگیرید.اگه گرفتین که مستقیم برید بقیه آموزش و اگر قصد افزایش امنیت رو دارید و میخواین برای سرور یک SSL راه بندازید خیلی ساده از سایت http://sslforfree.com استفاده کنید همه چی حله. فرض میگیریم الان SSL سرور شما راه افتاده و میخواید همچین درخواستی ایجاد کنید. یک کلاس که extends شده باشه از Application در پروژه خودتون ایجاد کنید.مثلا به اسم Init.java یک کلاس هم به نام NukeAllSslCerts بسازید.سورس این کلاس هم میتونه سورس زیر باشه! package com.example.myapp; import java.security.SecureRandom; import java.security.cert.X509Certificate; import javax.net.ssl.HostnameVerifier; import javax.net.ssl.HttpsURLConnection; import javax.net.ssl.SSLContext; import javax.net.ssl.SSLSession; import javax.net.ssl.TrustManager; import javax.net.ssl.X509TrustManager; public class NukeSSLCerts { protected static final String TAG = "NukeSSLCerts"; public static void nuke() { try { TrustManager[] trustAllCerts = new TrustManager[] { new X509TrustManager() { public X509Certificate[] getAcceptedIssuers() { X509Certificate[] myTrustedAnchors = new X509Certificate[0]; return myTrustedAnchors; } @Override public void checkClientTrusted(X509Certificate[] certs, String authType) {} @Override public void checkServerTrusted(X509Certificate[] certs, String authType) {} } }; SSLContext sc = SSLContext.getInstance("SSL"); sc.init(null, trustAllCerts, new SecureRandom()); HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory()); HttpsURLConnection.setDefaultHostnameVerifier(new HostnameVerifier() { @Override public boolean verify(String arg0, SSLSession arg1) { return true; } }); } catch (Exception e) { } } } خب،حالا در اون فایل init.class که ساختین،دستور زیر رو در تابع OnCreate اجرا کنید. new NukeSSLCerts().nuke(); یک روش دیگه هم هست که باید برای هر درخواست دستور allowSSl رو اجرا کنید که بیخیال با این خیلی ساده تمام درخواست هارو به اصطلاح Nuke میکنه و مشکل حله. حالا اگه میخاین یک درخواست http و به کمک این آموزش هم یک درخواست https به بهترین شکل بفرستین با استفاده از volley،اینجا کلیک کنید. توجه کنید که volley در حالت عادی از SSL پشتیبانی نمی کنه ها!!اما با همین Nuke میتونید این قابلیت رو بهش اضافه کنید. امید وارم تونسته باشم سوال خیلی از دوستان رو پاسخ داده باشم.اگر تونستم،برای سلامتی پدر و مادرم دعا کنید با تشکر ویرایش شده ۲۸ تیر ۱۳۹۷ توسط Behrad Ravanbod 1 نقل قول لینک ارسال به اشتراک گذاری در سایت های دیگر
پست های پیشنهاد شده
به گفتگو بپیوندید
هم اکنون می توانید مطلب خود را ارسال نمایید و بعداً ثبت نام کنید. اگر حساب کاربری دارید، برای ارسال با حساب کاربری خود اکنون وارد شوید .