中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

IBM AIX5.3 linux下C/C++實現HTTPS接口

發布時間:2020-07-23 06:49:51 來源:網絡 閱讀:861 作者:nbaluoshibin 欄目:編程語言

 最近在工作中需要開發一個Https接口,其不同于http、soap等協議,可以直接組織報文并發送,不存在加密,認證和獲取密鑰等安全操作。且之前開發的項目沒有開發過這類接口,所以當時壓力很大。    

    通過網上查閱資料,要實現https接口,必須現在本機上安裝openssl和curl(說明:只用opessl也可以實現https,目前我是使用openssl和curl)。

    在安裝openssl和curl過程中吃了不少苦頭,因為服務器是IBM AIX5.3,服務器很久沒升級打補丁很多軟件安裝都不能順利進行,可以說是高不成低不就。嘗試很多發布版本的安裝,結果都不盡人意,在快要絕望時,在http://blog.sina.com.cn/s/blog_541a3cf101017869.html網站上看到了希望,在IBM AIX5.3下安裝OpenSSL 0.9.8m可以成功,之前安裝的是OpenSSL 0.9.8a失敗(報Trace/BPT trap(coredump)錯誤)。

    下面說明下openssl和curl的安裝步驟說明:

  1. openssl安裝步驟

    gunzip opensll-0.9.8m.tar.gz

    tar xvfopensll-0.9.8m.tar

    ./config --prefix=自定義安裝路徑

    make

    make install

  1. curl安裝步驟

    gunzip curl-7.24.0.tar.gz

    tar xvf curl-7.24.0.tar

    ./configure --with-ssl=openssl的安裝路徑 --prefix=自定義curl安裝路徑

    make

    make install

 

一下給出https客戶端接口代碼:

long CHomeAnFangIt::Post(const std::string& url,const std::string& putObject, std::string& rsp)
{

    CURL* curl=curl_easy_init();
    if(!curl)
    {
        logger->info("Init curl error.");
        return -1;
    }

    curl_easy_setopt(curl, CURLOPT_TIMEOUT, 120);
    curl_easy_setopt(curl, CURLOPT_URL, url.c_str());
    curl_easy_setopt(curl, CURLOPT_POST, true); // POST
    curl_easy_setopt(curl,CURLOPT_WRITEFUNCTION,s_UrlWrite);
    curl_easy_setopt( curl , CURLOPT_POSTFIELDS, putObject.c_str());
    curl_easy_setopt( curl , CURLOPT_POSTFIELDSIZE, putObject.size());
    curl_easy_setopt(curl,CURLOPT_WRITEDATA,&rsp);
    curl_easy_setopt(curl, CURLOPT_NOSIGNAL, 1);
    curl_easy_setopt(curl, CURLOPT_USE_SSL, 1);
    curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, 0);
    curl_easy_setopt(curl, CURLOPT_SSL_VERIFYHOST, 0);

    CURLcode c=curl_easy_perform(curl);
    if(c!=CURLE_OK)
    {
        logger->info("curl_easy_perform error,err=%d",c);
        curl_easy_cleanup(curl);
        return -1;
    }

    long rsp_code=0;
    curl_easy_getinfo(curl,CURLINFO_RESPONSE_CODE,&rsp_code);

    curl_easy_cleanup(curl);
    return rsp_code;
}

 

總結:

    對新知識的上手速度不夠,當遇到一個難題陷入瓶頸時,想到的是退縮,認為此問題無法解決。這樣的思維是不好的。要利用目前所有信息,不斷的搜索查詢,總會有奇跡出現,勝利總會眷顧永不放棄的人。

    當一個程序dump掉后,會在當前目錄下生成core文件,我們可以使用gdb單步調式查看core發生錯誤的位置,把調用函數全稱搜索并獲取信息解決問題。


向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

阜城县| 佛冈县| 淅川县| 巩义市| 通山县| 德安县| 平乡县| 屏山县| 南召县| 区。| 临邑县| 昌平区| 钟山县| 二连浩特市| 桑日县| 郯城县| 资源县| 聂拉木县| 奉新县| 化州市| 荣昌县| 保山市| 噶尔县| 丹巴县| 涪陵区| 长乐市| 鄱阳县| 方正县| 峨边| 宽城| 长顺县| 新安县| 阜城县| 牟定县| 商河县| 峨山| 四川省| 遵化市| 泸州市| 长乐市| 华亭县|