當前位置:首頁 > IT技術

Curl添加open ssl 實現https連接

時間:2019-06-10 04:43:13來源:IT技術作者:seo實驗室小編閱讀:65次「手機版」
 

open ssl

Curl默認是不包含open ssl的,需要手動添加依賴項并修改編譯參數。

1.從http://curl.haxx.se下載最新的curl源碼,github應該也有,或者從我的下載連接下載也可以:

http://download.csdn.net/detail/sirria1/9579061

2.從http://windows.php.net/downloads/php-sdk/deps/網站下載相關的open ssl文件,或者從我的下載連接下載也可以:

http://download.csdn.net/detail/sirria1/9579063

3.將下載的open ssl 文件拷貝到curl的同級目錄,參考?curl-7.49.1\curl-7.49.1\winbuild\BUILD.WINDOWS.txt 這個文檔的說明

If you wish to support zlib, openssl, c-ares, ssh2, you will have to download

them separately and copy them to the deps directory as shown below:

?

somedirectory\

|_curl-src

| |_winbuild

|

|_deps

|_ lib

|_ include

|_ bin

?It is also possible to create the deps directory in some other random

?places and tell the makefile its location using the WITH_DEVEL option.

4.進入?curl-7.49.1\curl-7.49.1\winbuild 目錄創建一個編譯BAT內容如下:

@REM @echo off

@IF [%1]==[debug] (

@echo 正在使用debug模式編譯libcurl~~~

@nmake /f Makefile.vc WITH_DEVEL=../../openssl-1.0.1t-vc11-x86 mode=static VC=12 WITH_SSL=static ENABLE_IDN=no RTLIBCFG=dll DEBUG=yes MACHINE=x86

) ELSE (

@echo 正在使用release模式編譯libcurl~~~

@nmake /f Makefile.vc WITH_DEVEL=../../openssl-1.0.1t-vc11-x86 mode=static VC=12 WITH_SSL=static ENABLE_IDN=no RTLIBCFG=dll DEBUG=no MACHINE=x86

)

@REM @echo on

編譯參數說明可以參考同目錄下的文檔:BUILD.WINDOWS.txt

5.點擊 開始->所有程序 找到vs2012版本 以上的目錄文件 ?點擊 【visual studio tools】運行VS20xx 開發人員命令提示 讓后進入到你的curl-7.49.1\curl-7.49.1\winbuild

這個目錄,運行 第四步創建的bat,帶debug參數就會編譯出 debug版。

這樣編譯得到的curl庫就能拉取https網站數據了。

代碼示例

#include "stdafx.h"
#include "curl/curl.h"
#include <iOStream>

#pragma comment(lib, "libcurl_a_debug.lib")

using namespace std;

size_t WriteFunc(char *data, size_t size, size_t nmemb, void* s)
{
	int len = fwrite(data, size, nmemb, (FILE*)s);
	return len;
}

bool getUrl(char *filename)
{
	CURL *curl;
	CURLcode res = CURL_LAST;
	FILE *fp;
	errno_t err = fopen_s(&fp, filename, "w");
	if (0 != err)
	{
		return false;
	}
	string strReturnBuffer;
	int nCurlResultCode = 0;
	curl = curl_easy_init();    // 初始化
	if (curl)
	{
		int nCount = 0;
		while (0 != res && nCount++ < 50)
		{
			curl_easy_setopt(curl, CURLOPT_URL, "https://www.baidu.com/");
			curl_easy_setopt(curl, CURLOPT_FOLLOWLOCATION, 1);
			curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, &WriteFunc);
			curl_easy_setopt(curl, CURLOPT_WRITEDATA, fp);
			curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, 0);	// 禁用證書驗證
			res = curl_easy_perform(curl);   // 執行
		}

		if (res != CURLE_OK) {

			fprintf(stderr, "curl_easy_perform ERROR:%s\n", curl_easy_strerror(res));
		}
		curl_easy_cleanup(curl);
		fwrite(strReturnBuffer.c_str(), strReturnBuffer.size(), 1, fp);
		fclose(fp);
		return true;
	}

	return false;
}

int _tmain(int argc, _TCHAR* argv[])
{
	getUrl("get.html");
	return 0;
}

相關閱讀

https的優缺點分析

于這個問題,站長首先想到應該是網站安全問題,可以說網站安全問題其實是個大問題,主要表現在以下方面:1、首頁會被篡改,非法跳轉;2、網

http與https有什么區別?

  http與https有什么區別?HTTP是超文本傳輸協議的縮寫形式,而HTTPS表示安全的超文本傳輸協議。超文本傳輸協議是一組規則,必須遵循

談談HTTPS安全認證,抓包與反抓包策略

協議是指計算機通信網絡中兩臺計算機之間進行通信所必須共同遵守的規定或規則,超文本傳輸協議(HTTP)是一種通信協議,它允許將超文本

火狐訪問所有HTTPS網站顯示連接不安全解決辦法(徹底解

火狐訪問所有HTTPS網站顯示連接不安全解決辦法1、最徹底,所有HTTPS站點都信任!!參考:https://blog.csdn.net/u011650143/article/deta

} expectedcss(css-rcurlyexpected)

} expectedcss(css-rcurlyexpected)----我出現這個錯誤的原因是沒有在style中添加lang=less,添加后變為正常

分享到:

欄目導航

推薦閱讀

熱門閱讀

云南彩票投注站申请