AFNetworking、ASIHTTPRequest中SSL的使用

首先介绍下AFNetworking中的使用:

2.0要注意个地方:IOS7及其以后,采用AFHTTPSessionManager,IOS7之前采用AFHTTPRequestOperationManager。

以AFHTTPSessionManager为例,代码如下:

<span style="font-size:14px;">AFHTTPSessionManager   *httpClient = [AFHTTPSessionManager manager];
    httpClient.requestSerializer = [AFHTTPRequestSerializer serializer];
    httpClient.responseSerializer = [AFHTTPResponseSerializer serializer];

    // SSL Pinning
    NSString *certificatePath = [[NSBundle mainBundle] pathForResource:@"certificate" ofType:@"der"];
    NSData *certificateData = [NSData dataWithContentsOfFile:certificatePath];

    AFSecurityPolicy *securityPolicy = [[AFSecurityPolicy alloc] init];
    [securityPolicy setAllowInvalidCertificates:YES];
    [securityPolicy setPinnedCertificates:@[certificateData]];
    [securityPolicy setSSLPinningMode:AFSSLPinningModeCertificate];

    [httpClient setSecurityPolicy:securityPolicy];

    [httpClient GET:@"http://xxxx" parameters:nil success:^(NSURLSessionDataTask *task, id responseObject) {

    } failure:^(NSURLSessionDataTask *task, NSError *error) {
        //失败信息
    }];</span>

以AFHTTPRequestOperationManager为例,代码如下:

<span style="font-size:14px;">AFHTTPRequestOperationManager *httpClient1 = [AFHTTPRequestOperationManager manager];
    httpClient1.requestSerializer = [AFHTTPRequestSerializer serializer];
    httpClient1.responseSerializer = [AFHTTPResponseSerializer serializer];
    // SSL Pinning
    NSString *certificatePath1 = [[NSBundle mainBundle] pathForResource:@"certificate" ofType:@"der"];
    NSData *certificateData1 = [NSData dataWithContentsOfFile:certificatePath1];

    AFSecurityPolicy *securityPolicy1 = [[AFSecurityPolicy alloc] init];
    [securityPolicy1 setAllowInvalidCertificates:YES];
    [securityPolicy1 setPinnedCertificates:@[certificateData1]];
    [securityPolicy1 setSSLPinningMode:AFSSLPinningModeCertificate];

    [httpClient setSecurityPolicy:securityPolicy1];

    [httpClient1 GET:@"http://xxxx" parameters:nil success:^(AFHTTPRequestOperation *operation, id responseObject) {
        //成功信息
    } failure:^(AFHTTPRequestOperation *operation, NSError *error) {
        //失败信息
    }];</span>

下面来讲下ASI,

以ASIFormDataRequest为例,代码如下:

<span style="font-size:14px;">ASIFormDataRequest * request;
    request = [ASIFormDataRequest requestWithURL:[NSURL URLWithString:@""]];
    NSData *cerFile = [NSData dataWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"d1" ofType:@"cer"]];
    SecCertificateRef cert = SecCertificateCreateWithData(NULL, (__bridge CFDataRef)cerFile);
    NSArray *array = [NSArray arrayWithObjects:(__bridge id)cert,nil];
    [request setClientCertificates:array];
    [request setValidatesSecureCertificate:NO];

    [request startSynchronous];</span>

ASIHTTPRequest的参考http://www.tuicool.com/articles/UN3AveR,代码就不贴了。

演示点击打开链接

AFNetworking、ASIHTTPRequest中SSL的使用

时间: 2024-10-21 15:00:57

AFNetworking、ASIHTTPRequest中SSL的使用的相关文章

ASIHTTPRequest中数据压缩问题与gzip

出现了类似问题,先mark,以后修改 最近使用asi发现,部分网络回调数据不能正常的json解析,将responseHeaders头打印出来,才发现公司服务器部分数据添加了gzip压缩传输. 最近简单的解决方法就是,设置网络请求不返回压缩数据,自动解压就ok了. [request setAllowCompressedResponse:NO];   ----------------------------------------------------------------- ---------

iOS网络第三方使用方法大全AFNetworking/ASIHTTPRequest/MKNetworkKit

1. 参与对比的孩子有 AFNetworking/ASIHTTPRequest/MKNetworkKit 1. GET 1~ 新建工程: SingleProject 带故事板的. 为了我们测试的方便 2~ 打开系统命令提示符 ->  使用cocoapods 下载这3个第三方库 -> 如果不会使用cocoapods请百度cocoapods-> 然后确认环境. 进行安装 3~ podfile: platform: iOS, '7.0' pod "AFNetworking"

老陈---谈Delphi中SSL协议的应用[转]

摘要:本文主要介绍如何在Delphi中使用SSL协议.一共分为七个部分:(1)SSL协议是什么?(2)Delphi中如何使用SSL协议?(3)SSL客户端编程实例.(4)SSL服务端编程实例.(5)SSL证书编程实例.(6)中间人欺骗实例.(7)其它.本文作者同时有一个用SSL协议编写的作品叫SSLPROXY,感兴趣的读者可以从作者主页http://www.138soft.org下载. 一:SSL协议是什么?  SSL是一种加密传输协议.引用网上一段话:SSL 是Secure socket La

JAVA中SSL证书认证通讯

SSL通讯服务端 /******************************************************************** * 项目名称    :rochoc   <p> * 包名称      :rochoc.net.security <p> * 文件名称    :SSLServer   <p> * 编写者     :luoc    <p> * 编写日期    :2005-6-30    <p> * 程序功能(类

谈Delphi中SSL协议的应用(好多相关文章)

摘要:本文主要介绍如何在Delphi中使用SSL协议.一共分为七个部分:(1)SSL协议是什么?(2)Delphi中如何使用SSL协议?(3)SSL客户端编程实例.(4)SSL服务端编程实例.(5)SSL证书编程实例.(6)中间人欺骗实例.(7)其它.本文作者同时有一个用SSL协议编写的作品叫SSLPROXY,感兴趣的读者可以从作者主页http://www.138soft.org下载. 一:SSL协议是什么?  SSL是一种加密传输协议.引用网上一段话:SSL 是Secure socket La

如何通过抓包查看客户端https连接中ssl/tls加密所采用的秘钥位数

在https传输的过程中,我们底层的加密传输协议是ssl/tls.这里所使用的加密算法的秘钥位数(也就是服务器所使用的https证书的位数)可能是1024/2048或者更高,目前1024位的证书已经被证实是不安全的,需要逐步替换掉. 那么如何通过抓包来查看当前连接所采用的实际加密位数呢(注意,这里是抓包查看,如果是网页我们用浏览器直接访问,点击那个小锁然后进行一系列的操作就可以查看到连接信息了,如果有兴趣查看以下链接内容:http://www.wosign.com/FAQ/how_to_chec

一个实际问题分析及解决之三:websphere中SSL配置及使用

SSL配置是websphere security中很重要的一部分,具体详细阅读下面内容. http://www.ibm.com/developerworks/websphere/techjournal/0612_birk/0612_birk.html 这里重点分析两个问题:KeyStore和TrustStore的区别以及如何使用websphere的ssl配置. 一. KeyStore和TrustStore的区别 TrustStore主要用于存放public certificate,即公钥.而公钥

shiro中SSL

对于SSL的支持,Shiro只是判断当前url是否需要SSL登录,如果需要自动重定向到https进行访问. 首先生成数字证书,生成证书到D:\localhost.keystore 使用JDK的keytool命令,生成证书(包含证书/公钥/私钥)到D:\localhost.keystore: keytool -genkey -keystore "D:\localhost.keystore" -alias localhost -keyalg RSA 输入密钥库口令: 再次输入新口令: 您的

IIS中SSL Settings的三个选项(Ignore/Accept/Require)的区别

在设置IIS的SSL Settings时,一共有三个选项:Ignore/Accept/Require. 这三个选项是用来设置Client-Certificate(客户端证书)为可选的还是必需的.其区别如下: Ignore 意为不需要客户端证书 Accept 如果客户端提供了证书,那么就接受所提供的证书.但是如果客户端不提供证书,仍会建立连接. Require 只有客户端提供了证书才会连接.(客户端必须使用https://来访问,如果客户端用http://访问,会被尝试提升为htps://继续进行