android如何使用https请求,android – 如何在Retrofit中使用ssl证书进行https请求

我有一个.p12证书文件,我使用

SSL Converter将其转换为.pem证书文件.然后我在我的android代码中使用那个pem证书文件,如下所示:

OkHttpClient okHttpClient = new OkHttpClient();

try {

CertificateFactory cf = CertificateFactory.getInstance("X.509");

InputStream instream = context.getResources().openRawResource(R.raw.pem_certificate);

Certificate ca;

ca = cf.generateCertificate(instream);

KeyStore kStore = KeyStore.getInstance(KeyStore.getDefaultType());

kStore.load(null,null);

kStore.setCertificateEntry("ca",ca);

TrustManagerFactory tmf = TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm());

tmf.init(kStore);

SSLContext sslContext = SSLContext.getInstance("TLS");

sslContext.init(null,tmf.getTrustManagers(),null);

okHttpClient.setSslSocketFactory(sslContext.getSocketFactory());

} catch (CertificateException

| KeyStoreException

| NoSuchAlgorithmException

| IOException

| KeyManagementException e) {

e.printStackTrace();

}

baseURL = endpoint;

RestAdapter restAdapter = new RestAdapter.Builder()

.setEndpoint(baseURL)

.setClient(new OkClient(okHttpClient))

.build();

service = restAdapter.create(DishService.class);

但是这段代码不起作用.它在“ca = cf.generateCertificate(instream);”行中失败了.使用CertificateException消息.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值