我正在尝试在我的项目中使用cpp-netlib。我只需要创建一个HTTP代理,以后可以在其中插入一些功能。现在,我只需要侦听请求,将请求发送到新站点,并将新请求的答案转发到第一个请求。
这是我到目前为止的代码:
std::string ip = source(request);
http::client client;
std::ostringstream url;
url << "www.example.com/image.jpg";
http::client::request clientRequest(url.str());
http::client::response clientResponse = client.get(clientRequest);
response = server::response::stock_reply(server::response::ok);
response.headers = clientResponse.headers(); //This is not possible - not correct type or something
response.content = clientResponse.body();
结果为
error C2679: binary '=' : no operator found which takes a right-hand operand of type 'std::multimap<_Kty,_Ty>' (or there is no acceptable conversion)
对我正在使用的测试图像的请求会在响应中产生19.4kb的数据。如果我通过上述代码执行相同的请求(不复制标题),则会得到大约4kb数据的答案,浏览器尝试将其显示为文本(默认标题)。它看起来确实像图像,即使在文本中也是如此。
有人熟悉cpp-netlib-0.8吗?
response.content = clientResponse.body();
是正确的方法吗?如何添加正确的标题?cpp-netlib中的模板太奇怪了,我现在无法理解它!
谢谢...
最佳答案
而不是使用:
response.content = clientResponse.body();
正确的方法是:
std::string body_content = body(clientResponse);
另外,您将
response
用作变量,而您的变量实际上是clientResponse
有关更多示例,请阅读cpp-netlib v0.8 documentation