try
{
using boost::asio::ip::tcp;
boost::asio::io_service io_service;
// Get a list of endpoints corresponding to the server name.
tcp::resolver resolver(io_service);
tcp::resolver::query query("www.zzz.co.kr", "http");
tcp::resolver::iterator endpoint_iterator = resolver.resolve(query);
tcp::resolver::iterator end;
// Try each endpoint until we successfully establish a connection.
tcp::socket socket(io_service);
boost::system::error_code error = boost::asio::error::host_not_found;
while (error && endpoint_iterator != end)
{
socket.close();
socket.connect(*endpoint_iterator++, error);
}
if (error)
throw boost::system::system_error(error);
std::string contents = UrlEncode("id1") + "=" + UrlEncode("content1");
contents += "&" + UrlEncode("id2") + "=" + UrlEncode("content2");
contents += "&" + UrlEncode("id3") + "=" + UrlEncode("content3");
contents += "&" + UrlEncode("id4") + "=" + UrlEncode("content4");
boost::asio::streambuf request;
std::ostream request_stream(&request);
request_stream << "Post " << "/api/logs" << " HTTP/1.0\r\n";
request_stream << "Host: " << "www.zzz.co.kr" << "\r\n";
request_stream << "Accept-Charset: UTF-8" << "\r\n";
request_stream << "Content-Type: application/x-www-form-urlencoded;charset=UTF-8\r\n";
request_stream << "Accept: */*\r\n";
request_stream << "Content-Length: " << contents.length() << "\r\n";
request_stream << "Connection: close\r\n\r\n";
request_stream << contents;
// Send the request.
boost::asio::write(socket, request);
// Read the response status line. The response streambuf will automatically
// grow to accommodate the entire line. The growth may be limited by passing
// a maximum size to the streambuf constructor.
boost::asio::streambuf response;
boost::asio::read_until(socket, response, "\r\n");
// Check that response is OK.
std::istream response_stream(&response);
std::string http_version;
response_stream >> http_version;
unsigned int status_code;
response_stream >> status_code;
std::string status_message;
std::getline(response_stream, status_message);
if (!response_stream || http_version.substr(0, 5) != "HTTP/")
{
std::cout << "Invalid response" << std::endl;
return;
}
if (status_code != 200)
{
std::cout << "Response returned with status code " << status_code << std::endl;
return;
}
}
catch (std::exception& e)
{
std::cout << "Exception: " << e.what() << std::endl;
}
'프로그래밍 팁' 카테고리의 다른 글
c++ basic (0) | 2020.12.04 |
---|---|
boost beast http client post form (0) | 2019.10.17 |
CMD ERRORLEVEL & ^ (0) | 2019.04.19 |
GPGS (0) | 2019.04.15 |
모바일 사운드 최적화 (0) | 2018.05.17 |