301 根据 GET 请求永久移动(某些站点)C++
301 Moved Permanently on GET request (some sites) C++
我只想使用 C++ 代码向我的电报机器人发出 GET 请求,但它正在获取 301 Moved Permanently
(但如果我使用网络浏览器,它工作正常)。
对其他站点的请求工作正常,几乎没有错误(google.com、ip2c.org ...)。
下面我提供了我正在使用的代码:
const std::string host = "api.telegram.org";
const std::string target = "/bot1781233486:AAENIwkZt0Lbv9zjks6l-4loBcWDzKyMhyU/sendMessage?chat_id=@ZiyodaEnglishPracticeTracker&text=Test+message+from+bot";
boost::asio::io_context ioc;
boost::asio::ip::tcp::resolver resolver(ioc);
boost::asio::ip::tcp::socket socket(ioc);
boost::asio::connect(socket, resolver.resolve(host, "80"));
http::request<http::string_body> req(http::verb::get, target, 11);
req.set(http::field::host, host);
req.set(http::field::user_agent, BOOST_BEAST_VERSION_STRING);
http::write(socket, req);
{
boost::beast::flat_buffer buffer;
http::response<http::dynamic_body> res;
http::read(socket, buffer, res);
std::cout << res << std::endl;
}
socket.shutdown(boost::asio::ip::tcp::socket::shutdown_both);
机器人的令牌也显示在代码中,它只是一个临时机器人,所以请随意测试它,但更改聊天 ID 以查看结果。
如果遇到错误,请尝试这个:
const std::string host = "ip2c.org";
const std::string target = "/192.199.20.22";
这个returns一个有效的结果
我不得不将其从 HTTP 重定向到 HTTPS,通过将端口从 80 更改为 443 解决了问题
我只想使用 C++ 代码向我的电报机器人发出 GET 请求,但它正在获取 301 Moved Permanently
(但如果我使用网络浏览器,它工作正常)。
对其他站点的请求工作正常,几乎没有错误(google.com、ip2c.org ...)。
下面我提供了我正在使用的代码:
const std::string host = "api.telegram.org";
const std::string target = "/bot1781233486:AAENIwkZt0Lbv9zjks6l-4loBcWDzKyMhyU/sendMessage?chat_id=@ZiyodaEnglishPracticeTracker&text=Test+message+from+bot";
boost::asio::io_context ioc;
boost::asio::ip::tcp::resolver resolver(ioc);
boost::asio::ip::tcp::socket socket(ioc);
boost::asio::connect(socket, resolver.resolve(host, "80"));
http::request<http::string_body> req(http::verb::get, target, 11);
req.set(http::field::host, host);
req.set(http::field::user_agent, BOOST_BEAST_VERSION_STRING);
http::write(socket, req);
{
boost::beast::flat_buffer buffer;
http::response<http::dynamic_body> res;
http::read(socket, buffer, res);
std::cout << res << std::endl;
}
socket.shutdown(boost::asio::ip::tcp::socket::shutdown_both);
机器人的令牌也显示在代码中,它只是一个临时机器人,所以请随意测试它,但更改聊天 ID 以查看结果。
如果遇到错误,请尝试这个:
const std::string host = "ip2c.org";
const std::string target = "/192.199.20.22";
这个returns一个有效的结果
我不得不将其从 HTTP 重定向到 HTTPS,通过将端口从 80 更改为 443 解决了问题