iOS 項目中對OpenSSL和curl的使用
- OpenSSL和curl的交叉編譯
OpenSSL和curl的編譯採用shell腳本來編譯,編譯腳本是由網上找的修改版本。編譯腳本下載地址
使用方法:
1、下載對應的源碼並解壓
2、將對應的腳本和解壓後的源碼文件夾放在同一目錄
3、修改shell腳本中的OPENSSL_VERSION版本信息爲對應的版本,或者將-v 傳入對應的腳本
4、開始編譯./openssl-build.sh
5、編譯完成後會在當前目錄生成對應的靜態庫
- curl是否支持ssl的判斷
利用編譯好的靜態庫,在iOS項目工程中驗證curl是否支持https。
// 引入頭文件
#import "curl.h"
//查看ssl_version版本
curl_version_info_data *data = curl_version_info(CURLVERSION_NOW);
printf("openssl ssl_version %s \n",data->ssl_version);
// ssl_version的值不爲空表示支持https
- 在iOS項目工程中利用curl獲取數據
CURL *curl;
CURLcode res;
struct curl_slist *headers = NULL;
headers = curl_slist_append(headers, "Accept:application/json");
headers = curl_slist_append(headers, "Content-Type:application/json");
headers = curl_slist_append(headers, "charset:utf-8");
curl = curl_easy_init();
if (curl)
{
// 設置協議頭
curl_easy_setopt(curl, CURLOPT_HTTPHEADER, headers);
curl_easy_setopt(curl, CURLOPT_URL,url);
// 設置不校驗證書
curl_easy_setopt(curl, CURLOPT_SSL_VERIFYHOST, 0L);
curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, 0L);
res = curl_easy_perform(curl); // 執行
if (res != CURLE_OK) {
NSLog(@"請求失敗");
}
NSLog(@"請求返回值是%i",res);
// res == 1 表示不支持的協議
curl_slist_free_all(headers);
curl_easy_cleanup(curl);
}
return true;
說明:利用curl方法請求https地址服務的時候不需要在info.plist中配置