2012-03-19 187 views
3

我使用的是Visual Studio C++ 2010,它使用cURL工作得很好,但問題在於https請求不會返回任何內容。而不是顯示輸出:curl簡單的https請求不會返回任何東西C++

#include "StdAfx.h" 
#include <stdio.h> 
#include <curl/curl.h> 
#include <conio.h> 

int main(void) 
{ 
    CURL *curl; 
    CURLcode res; 

    curl = curl_easy_init(); 
    if(curl) { 
    curl_easy_setopt(curl, CURLOPT_URL, "https://www.google.com"); 
    curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, 0L); 
    curl_easy_setopt(curl, CURLOPT_SSL_VERIFYHOST, 0L); 
    res = curl_easy_perform(curl); 
    curl_easy_cleanup(curl); 
    } 
    _getch(); 
    return 0; 
} 

這個代碼,例如,它只是一個https請求谷歌,但它沒有返回任何只是因爲它以https開頭。如果我拿走了https的「s」,它就可以正常工作:「http://www.google.com.br」正常顯示結果。我在這裏錯過了什麼?我正在使用cURL中的示例。 我嘗試過與其他網站發生過同樣的事情。 :/像https://www.facebook.com

順便說一句,如果你們知道如何將網頁內容存儲在一個字符串中,我會很高興知道。

在此先感謝。 :)

+0

是守業者SSL驗證標誌,真正零,你想要什麼?有點扯皮似乎暗示它會繞過某種程度的驗證。我的第一個嘗試是嘗試查看這些標誌是否可以像使用https url捲動的命令行那樣清除。我猜想它會以同樣的方式失敗。 – 2012-03-19 19:55:16

+0

邁克爾我不太確定。我想要的是在沒有任何SSL安全性的情況下正確獲取https,因爲我希望它能夠快速檢索數據。但現在我什麼都沒有得到:/如果它危害數據的安全性,我希望獲得最快的方式。 – Grego 2012-03-19 19:57:07

+0

你是從源代碼構建的嗎?如果是這樣,你是否明確啓用SSL支持?如果沒有,您下載的軟件包是否啓用了SSL支持(或者,您是從哪裏下載的)? – ildjarn 2012-03-19 20:01:19

回答

4

這個簡單的例子對我的作品:

#include <stdio.h> 
#include <curl/curl.h> 

int main(void) 
{ 
    CURL *curl; 
    CURLcode res; 

    curl = curl_easy_init(); 
    if(curl) { 
    /* First set the URL that is about to receive our POST. This URL can 
     just as well be a https:// URL if that is what should receive the 
     data. */ 
    curl_easy_setopt(curl, CURLOPT_URL, "https://www.google.co.uk"); 

    /* Perform the request, res will get the return code */ 
    res = curl_easy_perform(curl); 

    /* always cleanup */ 
    curl_easy_cleanup(curl); 
    } 
    return 0; 
} 

我得到的源代碼和建庫很久以前的事,但我敢肯定,我啓用編譯源之前,SSL支持。確保你已經安裝了OpenSSL,並且(如果你在Linux下工作),你已經正確地初始化了PKG_CONFIG_PATH變量。這是您在執行configure腳本時指定的兩個選項。

--with-ssl=PATH   Where to look for OpenSSL, PATH points to the SSL 
          installation (default: /usr/local/ssl); when 
          possible, set the PKG_CONFIG_PATH environment 
          variable instead of using this option 

    --without-ssl   disable OpenSSL 

我希望它有幫助。

如果你使用的是Windows,這篇文章可能對你也很有用:

Building libcurl with SSL support on Windows

+0

嗨fella,我正在使用Visual Studio C++ 2008上的Windows 7進行更具體的工作,我安裝了OpenSSL,但是我通過Visual Studio 2008的Curl Page的教程構建了它,我不得不下載並安裝openssl要做到這一點,但我正在做的這個應用程序我打算分發,我不得不要求大家安裝OpenSSL?但首先,我想知道我在哪裏告訴應用程序指向OpenSSL,我建立了它的支持,但我似乎沒有得到它的工作,如果你有什麼分享,我會很高興。謝謝。 :) – Grego 2012-03-19 21:05:24

+0

哦是啊有沒有辦法忽略SSL,並使https甚至沒有安全的事情只是檢索HTML?因爲我不關心安全性,我只想着從服務器接收數據 – Grego 2012-03-19 21:20:10

+0

謝謝。這在第二天就結束了我的地獄。 – 2013-12-17 16:01:04