Пытаюсь разобраться с кодом небольшого веб-сервера на asio
ссылка на первоисточник. У меня возникла такая проблема, что я отправляю на этот сервер post запрос с небольшим файлом в теле через postman, но у меня принимается только маленькая часть запроса, я хотел узнать почему не получается принять запрос целиком?
часть запроса, которую я получаю
spoilerPOST / HTTP/1.1
User-Agent: PostmanRuntime/7.28.4
Accept: */*
Postman-Token: 83e831df-1e8a-47e8-94b3-2403e4efff8b
Host: 127.0.0.1:1234
Accept-Encoding: gzip, deflate, br
Connection: keep-alive
Content-Type: multipart/form-data; boundary=--------------------------087172824010993708739017
Content-Length: 12397
----------------------------087172824010993708739017
Content-Disposition: form-data; name="image"; filename="clion.png"
Content-Type: image/png
�PNG
код для приема и обработки запросов
spoilervoid HttpAcceptor::AcceptConnection()
{
std::shared_ptr<asio::ip::tcp::socket> sock(new asio::ip::tcp::socket(m_IOService));
m_Acceptor.async_accept(*sock.get(),
[this, sock](const boost::system::error_code& ec)
{
if(ec.value() == 0){
(new HttpService(sock))->HttpHandleRequest();
}else{
std::cout<<"Error occured, Error code = "<<ec.value()
<<" Message: "<<ec.message();
}
// accept next request if not stopped yet
if(!m_IsStopped.load()){
AcceptConnection();
}else{
//stop accepting incoming connection requests
m_Acceptor.close();
}
});
}
//код обработки запроса
void HttpService::HttpHandleRequest()
{
//read the request from client
asio::async_read_until(*m_Socket.get(),
m_Request, '\n',
[this](const boost::system::error_code& ec,
std::size_t bytes_transfered)
{
//get string from read stream
std::string request_line;
std::istream request_stream(&m_Request);
std::getline(request_stream, request_line, '\0');
//parse the string and get HTTP request
HttpRequestParser parser(request_line);
std::shared_ptr<HttpRequest> http_request = parser.GetHttpRequest();
std::cout<<"Request: {"<<std::endl;
std::cout<<http_request->request;
std::cout<<"}"<<std::endl;
SendResponse();
});