رفتن به مطلب
انجمن اندروید ایران | آموزش برنامه نویسی اندروید و موبایل
  • android.png.1fab383bc8500cd93127cebc65b1dcab.png

HTTPS Request در برنامه نویسی اندروید


پست های پیشنهاد شده

با عرض سلام خدمت تمامی دوستان.

در این آموزش ساده میخوام که بهتون بگم چطور یک 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 میتونید این قابلیت رو بهش اضافه کنید.

 

امید وارم تونسته باشم سوال خیلی از دوستان رو پاسخ داده باشم.اگر تونستم،برای سلامتی پدر و مادرم دعا کنید با تشکر :heart:

ویرایش شده توسط Behrad Ravanbod
لینک ارسال
به اشتراک گذاری در سایت های دیگر

به گفتگو بپیوندید

هم اکنون می توانید مطلب خود را ارسال نمایید و بعداً ثبت نام کنید. اگر حساب کاربری دارید، برای ارسال با حساب کاربری خود اکنون وارد شوید .

مهمان
ارسال پاسخ به این موضوع...

×   شما در حال چسباندن محتوایی با قالب بندی هستید.   حذف قالب بندی

  تنها استفاده از 75 اموجی مجاز می باشد.

×   لینک شما به صورت اتوماتیک جای گذاری شد.   نمایش به صورت لینک

×   محتوای قبلی شما بازگردانی شد.   پاک کردن محتوای ویرایشگر

×   شما مستقیما نمی توانید تصویر خود را قرار دهید. یا آن را اینجا بارگذاری کنید یا از یک URL قرار دهید.

×
×
  • اضافه کردن...