c++实现发送http请求通过get方式获取网页源代码


在C++中,直接发送HTTP GET请求并获取网页源代码通常不是标准库直接支持的功能,因为C++标准库主要关注于底层编程和算法,而不直接提供网络编程的高级功能。但是,你可以使用第三方库如`libcurl`来实现这一功能。

以下是一个使用`libcurl`库发送HTTP GET请求并打印响应内容的简单示例。请注意,你需要先安装`libcurl`库才能编译和运行此代码。


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

// 回调函数,用于接收HTTP响应数据
size_t writefunc(void *ptr, size_t size, size_t nmemb, std::string *userp) {
    ((std::string*)userp)->append((char*)ptr, size * nmemb);
    return size * nmemb;
}

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

    std::string readBuffer;

    curl_global_init(CURL_GLOBAL_ALL);
    curl = curl_easy_init();
    if(curl) {
        // 设置要访问的URL
        curl_easy_setopt(curl, CURLOPT_URL, "http://example.com");

        // 设置回调函数,用于接收响应数据
        curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, writefunc);
        curl_easy_setopt(curl, CURLOPT_WRITEDATA, &readBuffer);

        // 执行HTTP GET请求
        res = curl_easy_perform(curl);

        // 检查是否有错误发生
        if(res != CURLE_OK)
            std::cerr << "curl_easy_perform() failed: " << curl_easy_strerror(res) << std::endl;
        else
            std::cout << readBuffer << std::endl; // 打印网页源代码

        // 清理
        curl_easy_cleanup(curl);
    }
    curl_global_cleanup();

    return 0;
}

**注意**:

- 你需要确保你的系统已经安装了`libcurl`库,并且你的编译器能够找到它。

- 示例中的URL(`http://example.com`)是一个占位符,你应该替换为你想要请求的网页的URL。

- 编译时,你可能需要链接`libcurl`库,具体命令取决于你的系统和编译器。例如,在Linux上,如果你使用g++,可能需要添加`-lcurl`选项来链接库。

- 示例中的`writefunc`函数是一个回调函数,它接收从HTTP服务器发送的数据,并将其追加到`readBuffer`字符串中。当`curl_easy_perform`函数执行完毕后,`readBuffer`将包含网页的源代码。