2011-07-17 43 views
1

我決定在我的C++服務器中實現OpenID登錄。我查看了可用的C++ OpenID客戶端列表,發現只有一個流行的libopkele。但是對於我的簡單服務器來說,它的需求似乎相當方便2,它有自己的xml解析器,對正則表達式使用boost等等。所以我想在C++中創建簡單的openID客戶端,所以我決定移植PHPclient(因爲我知道PHPa位)。有一個叫class.openid.php的類,它的第一個版本只有200行PHP代碼。我的主要問題是我從來沒有在PHP或C++中使用curl。所以我翻譯成C/C++這樣的PHP代碼乞求幫助:如何使用CURL將這樣的PHP代碼翻譯成C/C++?

function CURL_Request($url, $method="GET", $params = "") { // Remember, SSL MUST BE SUPPORTED 
     if (is_array($params)) $params = $this->array2url($params); 
     $curl = curl_init($url . ($method == "GET" && $params != "" ? "?" . $params : "")); 
     curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true); 
     curl_setopt($curl, CURLOPT_HEADER, false); 
     curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false); 
     curl_setopt($curl, CURLOPT_HTTPGET, ($method == "GET")); 
     curl_setopt($curl, CURLOPT_POST, ($method == "POST")); 
     if ($method == "POST") curl_setopt($curl, CURLOPT_POSTFIELDS, $params); 
     curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); 
     $response = curl_exec($curl); 

     if (curl_errno($curl) == 0){ 
      $response; 
     }else{ 
      $this->ErrorStore('OPENID_CURL', curl_error($curl)); 
     } 
     return $response; 
} 

所以..如何這樣的功能轉化爲C++(使用的libcurl)從PHP?

+0

Ofcourse我希望看到一些php openID庫的完整翻譯!例如像600行PHP代碼(一類)[lightopenid](http://code.google.com/p/lightopenid/)。但是,沒有人爲我做過這件事......好吧,我可以自己試試。因爲在我的小型跨平臺服務器上只使用一個小的'libopkele'來進行openID認證,這對我來說似乎不太合適。 – Rella

回答

5

cURL有一個C API:link。你也可以在C++中使用它。

當你使用cURL API時,重寫你給的函數應該不難。

+0

這不是它被命名爲cURL的原因,正如FAQ解釋的那樣...... –