iOS 項目中對OpenSSL和curl的使用

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中配置

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章