[英]cURL & C++ (libcurl?)
我有些困惑,無法接受我制作的簡單Shell腳本並將其編譯為C ++中的exe。 我現在遇到的問題,但一直沒有研究,是如何使cURL與C ++一起工作。 本質上,我想讓用戶輸入一個url,將其存儲在字符串中,然后在下一行中使用它來檢測是否存在url重定向。
var url,
cout<<"Please enter a URL to detect if there is a redirect."<<endll
cin<<URL;
curl -b cookies -w "%{url_effective}\n" -L -s -S -o /dev/null URL // <- http://website.com/page/Redirected_PATH/
有什么方法可以導入頭文件來支持我以前在終端中使用的先前的cURL標志?
感謝您的見解。
Curl有一個名為libcurl的庫,該庫可讓您直接與curl交互,而不必通過命令行。 以下是將數據發送到URL的示例:
extern "C" {
#include <curl/curl.h>
}
size_t CurlReadFunction(void *ptr, size_t size, size_t nmemb, void *userdata)
{
stringstream& ssData = *(stringstream*)userdata;
string sData = ssData.str();
size_t iBytesToRead = sData.size() - ssData.tellp();
if (iBytesToRead > nmemb)
iBytesToRead = nmemb;
memcpy(ptr, sData.data() + ssData.tellp(), iBytesToRead);
ssData.seekp((size_t)ssData.tellp() + iBytesToRead);
return iBytesToRead;
}
///... then when you want to send your data
curl_global_init(CURL_GLOBAL_ALL);
CURL* pCurl = curl_easy_init();
if (!pCurl)
return;
curl_easy_setopt(pCurl, CURLOPT_TIMEOUT, 10L);
curl_easy_setopt(pCurl, CURLOPT_NOSIGNAL, 1L);
curl_easy_setopt(pCurl, CURLOPT_URL, "http://example.com/receive.php");
curl_easy_setopt(pCurl, CURLOPT_UPLOAD, 1);
curl_easy_setopt(pCurl, CURLOPT_READDATA, &ssData);
curl_easy_setopt(pCurl, CURLOPT_READFUNCTION, CurlReadFunction);
curl_easy_setopt(pCurl, CURLOPT_INFILESIZE_LARGE, (curl_off_t)sData.size());
CURLcode eRes = curl_easy_perform(pCurl);
if(eRes == CURLE_OK)
//success
else
cout << "curl_easy_perform() failed: " << curl_easy_strerror(eRes) << "\n";
curl_easy_cleanup(pCurl);
curl_global_cleanup();
我意識到這與您要執行的操作不同,但是使用curlcurl API可以進行curl的所有操作。 然后,您鏈接到libcurl.lib並完成。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.