Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 使用大型主体增强asio post请求_C++_Http_Post_Boost_Asio - Fatal编程技术网

C++ 使用大型主体增强asio post请求

C++ 使用大型主体增强asio post请求,c++,http,post,boost,asio,C++,Http,Post,Boost,Asio,我正在尝试使用boost::asio向localhost:55001/predict发出一个同步的http POST请求,请求的主体很大(大约8784000个字符)。我可以在python中使用请求包很好地实现这一点。我的服务器能够很好地处理大型主体,因此我知道问题可能不在服务器端 问题是: 我根据boost::asio POST请求的其他stackoverflow POST设置了我的请求。下面是我如何设置POST请求的主要代码块。编辑:我需要使用Boost,因为我的客户端无法使用C++11 fe

我正在尝试使用boost::asio向localhost:55001/predict发出一个同步的http POST请求,请求的主体很大(大约8784000个字符)。我可以在python中使用
请求
包很好地实现这一点。我的服务器能够很好地处理大型主体,因此我知道问题可能不在服务器端

问题是: 我根据boost::asio POST请求的其他stackoverflow POST设置了我的请求。下面是我如何设置POST请求的主要代码块。编辑:我需要使用Boost,因为我的客户端无法使用C++11

features
变量包含一个很长的字符串(360个JSON表示为以&分隔的字符串)

1) 有人能解释一下如何使用boost::asio在同步POST请求的请求体中发送大量数据吗?我不熟悉C++,所以一个例子会很有帮助。p> 2) Python的请求包是否将这些问题从我这里抽象出来


让我知道,如果有其他信息,我可以提供,以帮助您回答这个问题。提前谢谢

> Poost是很好的,但是如果你想做的就是HTTP GET和POST方法(而你使用C++ 11),那么考虑一些类似的事情。它是一个轻量级库,包装libcurl,并以Python请求项目为模型

从中,下面是一个发出POST请求的快速示例

#include <cpr/cpr.h>

auto r = cpr::Post(cpr::Url{"http://www.httpbin.org/post"},
                   cpr::Body{"This is raw POST data"},
                   cpr::Header{{"Content-Type", "text/plain"}});
std::cout << r.text << std::endl;

/*
 * {
 *   "args": {},
 *   "data": "This is raw POST data",
 *   "files": {},
 *   "form": {},
 *   "headers": {
 *     ..
 *     "Content-Type": "text/plain",
 *     ..
 *   },
 *   "json": null,
 *   "url": "http://www.httpbin.org/post"
 * }
 */
#包括
自动r=cpr::Post(cpr::Url{”http://www.httpbin.org/post"},
cpr::Body{“这是原始POST数据”},
cpr::头{{“内容类型”,“文本/普通”});

谢谢你的快速回复。我将在原始帖子中添加一个警告,那就是我不能使用C++11。我的客户仍然没有更新到这一点,这就是我尝试使用Boost的原因。如果有一种方法不依赖C++ 11做CPR,那么这将是完美的。如果你不能使用C++ 11,那么你应该尝试本地LIbCURL API,或者调用它的C++包装器。libcurl会做你想做的一切,但你必须自己做更多的举重。好的,谢谢-我会试试的。你知道libcurl是否是一个只有头的库吗?看起来我只需要包含@Aakash282 No,你必须链接到它。
request\u stream
response = requests.post('http://localhost:55001/predict', data=features.encode('utf-8'))
#include <cpr/cpr.h>

auto r = cpr::Post(cpr::Url{"http://www.httpbin.org/post"},
                   cpr::Body{"This is raw POST data"},
                   cpr::Header{{"Content-Type", "text/plain"}});
std::cout << r.text << std::endl;

/*
 * {
 *   "args": {},
 *   "data": "This is raw POST data",
 *   "files": {},
 *   "form": {},
 *   "headers": {
 *     ..
 *     "Content-Type": "text/plain",
 *     ..
 *   },
 *   "json": null,
 *   "url": "http://www.httpbin.org/post"
 * }
 */