A
Size: a a a
AZ
A
AZ
AZ
A
AD
v
A
AP
AM
std::string host = "example.com";
unsigned int port_num = 80;
asio::ip::tcp::resolver::query resolver_query(host,
port_num, asio::ip::tcp::resolver::query::numeric_service);
asio::ip::tcp::resolver resolver(ios);
boost::system::error_code ec;
asio::ip::tcp::resolver::iterator it =
resolver.resolve(resolver_query, ec);
A
std::string host = "example.com";
unsigned int port_num = 80;
asio::ip::tcp::resolver::query resolver_query(host,
port_num, asio::ip::tcp::resolver::query::numeric_service);
asio::ip::tcp::resolver resolver(ios);
boost::system::error_code ec;
asio::ip::tcp::resolver::iterator it =
resolver.resolve(resolver_query, ec);
AS
URL URL::Parse(const char * url) {
std::regex r("^"
"(" // 1. server = protocol user:password @ host : port
"(" // 2. protocol = scheme + ://
"([^:]+)" // 3. scheme
"://" //
")"
"(" // 4. user:password
"([^:@]+)?" // 5. user
"(:([^@]*))?" // 6. :password 7. password
"@)?"
"([^:/$]+)?" // 8. host
"(:(\\d+))?" // 9. :port 10. port
")"
"(/[^$]*)?" // 11. path
"$"
);
std::cmatch m;
bool matched = std::regex_match(url, m, r);
AM
string_view
и разделить по частям)AS
string_view
и разделить по частям)AM
A
std::string Requests::Get(const std::string& url)
{
boost::asio::io_context ioContext;
boost::asio::ip::tcp::resolver resolver(ioContext);
boost::asio::ip::tcp::resolver::query query(url, "80",
boost::asio::ip::tcp::resolver::query::numeric_service);
const auto resolved = resolver.resolve(query);
boost::beast::tcp_stream tcpStream(ioContext);
tcpStream.connect(resolved);
boost::beast::http::request<boost::beast::http::string_body> request{ boost::beast::http::verb::get,
url, 11 };
request.set(boost::beast::http::field::host, url);
request.set(boost::beast::http::field::user_agent, "Agent");
boost::beast::http::write(tcpStream, request);
boost::beast::flat_buffer buffer;
boost::beast::http::response<boost::beast::http::dynamic_body> response;
boost::beast::http::read(tcpStream, buffer, response);
const std::string answer = boost::beast::buffers_to_string(buffer.data());
tcpStream.socket().shutdown(boost::asio::ip::tcp::socket::shutdown_both);
return answer;
}
AM
std::string Requests::Get(const std::string& url)
{
boost::asio::io_context ioContext;
boost::asio::ip::tcp::resolver resolver(ioContext);
boost::asio::ip::tcp::resolver::query query(url, "80",
boost::asio::ip::tcp::resolver::query::numeric_service);
const auto resolved = resolver.resolve(query);
boost::beast::tcp_stream tcpStream(ioContext);
tcpStream.connect(resolved);
boost::beast::http::request<boost::beast::http::string_body> request{ boost::beast::http::verb::get,
url, 11 };
request.set(boost::beast::http::field::host, url);
request.set(boost::beast::http::field::user_agent, "Agent");
boost::beast::http::write(tcpStream, request);
boost::beast::flat_buffer buffer;
boost::beast::http::response<boost::beast::http::dynamic_body> response;
boost::beast::http::read(tcpStream, buffer, response);
const std::string answer = boost::beast::buffers_to_string(buffer.data());
tcpStream.socket().shutdown(boost::asio::ip::tcp::socket::shutdown_both);
return answer;
}
url
- только что-то типо example.com
?