首先,C++实现发送HTTP请求需要使用到第三方库,最常用的是libcurl库。下面我们将具体介绍如何使用libcurl库来通过GET方式获取网页源代码。
步骤一:安装libcurl
根据自己的系统选择合适的安装方式,例如使用Linux系统下的包管理工具可以执行以下命令来安装:
sudo apt-get install libcurl4-openssl-dev
步骤二:编写代码
包含头文件和命名空间
#include <iostream>
#include <curl/curl.h>
using namespace std;
定义回调函数
size_t write_data(char *ptr, size_t size, size_t nmemb, void *userdata) {
string *str = (string*)userdata;
str->append(ptr, size * nmemb);
return size * nmemb;
}
主函数
int main() {
CURL *curl;
CURLcode res;
string buffer;
curl = curl_easy_init();
if (curl) {
curl_easy_setopt(curl, CURLOPT_URL, "http://www.example.com"); // 请求的URL地址
curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, write_data); // 设置接受数据的回调函数
curl_easy_setopt(curl, CURLOPT_WRITEDATA, &buffer); // 回调函数的第4个参数
res = curl_easy_perform(curl); // 执行发送请求的操作
if(res != CURLE_OK) {
cout << "curl_easy_perform() failed: " << curl_easy_strerror(res) << endl;
}
curl_easy_cleanup(curl); // 不要忘记清理操作
cout << buffer << endl; // 输出获取到的网页源代码内容
}
return 0;
}
示例
示例1:获取百度首页
#include <iostream>
#include <curl/curl.h>
using namespace std;
size_t write_data(char *ptr, size_t size, size_t nmemb, void *userdata) {
string *str = (string*)userdata;
str->append(ptr, size * nmemb);
return size * nmemb;
}
int main() {
CURL *curl;
CURLcode res;
string buffer;
curl = curl_easy_init();
if (curl) {
curl_easy_setopt(curl, CURLOPT_URL, "http://www.baidu.com");
curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, write_data);
curl_easy_setopt(curl, CURLOPT_WRITEDATA, &buffer);
res = curl_easy_perform(curl);
if(res != CURLE_OK) {
cout << "curl_easy_perform() failed: " << curl_easy_strerror(res) << endl;
}
curl_easy_cleanup(curl);
cout << buffer << endl;
}
return 0;
}
示例2:获取GitHub仓库源码
#include <iostream>
#include <curl/curl.h>
using namespace std;
size_t write_data(char *ptr, size_t size, size_t nmemb, void *userdata) {
string *str = (string*)userdata;
str->append(ptr, size * nmemb);
return size * nmemb;
}
int main() {
CURL *curl;
CURLcode res;
string buffer;
curl = curl_easy_init();
if (curl) {
curl_easy_setopt(curl, CURLOPT_URL, "https://raw.githubusercontent.com/microsoft/vscode/v1.63.2/LICENSE.txt");
curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, write_data);
curl_easy_setopt(curl, CURLOPT_WRITEDATA, &buffer);
res = curl_easy_perform(curl);
if(res != CURLE_OK) {
cout << "curl_easy_perform() failed: " << curl_easy_strerror(res) << endl;
}
curl_easy_cleanup(curl);
cout << buffer << endl;
}
return 0;
}
以上是C++实现发送HTTP请求通过GET方式获取网页源代码的完整攻略,包含如何安装libcurl和具体的代码实现过程,其中还包括了两条示例说明分别获取百度首页和GitHub仓库的源码。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:c++实现发送http请求通过get方式获取网页源代码 - Python技术站