gpt4 book ai didi

c++ - C++获取页面内容

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:57:49 34 4
gpt4 key购买 nike

我创建了一个 PHP 和 C# 应用程序,它从用户的玩家代号中获取用户的 Xbox 360 配置文件 ID。

我只是想知道我如何进行网络请求并将 url 的页面内容放入 C++ 中的字符串中。

谢谢。

最佳答案

这是我以前使用 libCURL 编写的一个简陋的 C++ HTTP 提取器。

它接受一个 URL 并返回一个包含 get 请求内容的字符串。修改和调味:

/*
* HttpFetcher.h
*/
#ifndef _http_fetcher_
#define _http_fetcher_

#include <stdlib.h>
#include <string>

class HttpFetcher {
public:
std::string simpleGetRequest(std::string url);

private:
// Private methods to handle getting
struct MemoryStruct {
char *memory;
size_t size;
};
static size_t WriteMemoryCallback(void *ptr, size_t size, size_t nmemb, void *data);

};

#endif // ifndef _http_fetcher_

/*
* HttpFetcher.cpp
* Much of this is quite similar to examples on the libcURL site
*/

#include "HttpFetcher.h"
#include "curl.h"
#include "easy.h"
#include <iostream>


size_t HttpFetcher::WriteMemoryCallback(void *ptr, size_t size, size_t nmemb, void *data)
{
size_t realsize = size * nmemb;
struct MemoryStruct *mem = (struct MemoryStruct *)data;

mem->memory = (char*)realloc(mem->memory, mem->size + realsize + 1);
if (mem->memory == NULL) {
/* out of memory! */
printf("not enough memory (realloc returned NULL)\n");
exit(EXIT_FAILURE);
}

memcpy(&(mem->memory[mem->size]), ptr, realsize);
mem->size += realsize;
mem->memory[mem->size] = 0;

return realsize;
}



std::string HttpFetcher::simpleGetRequest(std::string url)
{
std::string toReturn = "";
CURL *curl = NULL;

struct MemoryStruct chunk;
chunk.memory = (char*)malloc(1);
chunk.size = 0;

CURLcode res;
curl = curl_easy_init();
if(curl) {
curl_easy_setopt(curl, CURLOPT_URL, url.c_str());
curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, &WriteMemoryCallback);
curl_easy_setopt(curl, CURLOPT_WRITEDATA, (void*)&chunk);
// Some requests fail without a user agent.
curl_easy_setopt(curl, CURLOPT_USERAGENT, "libcurl-agent/1.0");

res = curl_easy_perform(curl);

curl_easy_cleanup(curl);

toReturn = std::string(chunk.memory);
}

free(chunk.memory);

return toReturn;
}

关于c++ - C++获取页面内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7168933/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com