13
Cách thực hiện chính xác POST tới máy chủ HTTPS và nhúng dữ liệu đăng nhập một cách chính xác. Mã dưới đây không trả lại bất kỳ cookie nào (trong Wininet). Tôi tự hỏi làm thế nào thư viện HTTP POCO xử lý chuyển hướng HTTP?POCO C++ - NET SSL - cách POST yêu cầu HTTPS
MyApp()
{
try
{
const Poco::URI uri("https://localhost.com");
const Poco::Net::Context::Ptr context(new Poco::Net::Context(Poco::Net::Context::CLIENT_USE, "", "", "rootcert.pem"));
Poco::Net::HTTPSClientSession session(uri.getHost(), uri.getPort(), context);
Poco::Net::HTTPRequest req(Poco::Net::HTTPRequest::HTTP_POST, "/login.php");
req.setContentType("Content-Type: application/x-www-form-urlencoded\r\n");
req.setKeepAlive(true);
std::string reqBody("username=???&password=???&action_login=Log+In\r\n\r\n");
req.setContentLength(reqBody.length());
//Poco::Net::HTTPBasicCredentials cred("???", "???");
//cred.authenticate(req);
session.sendRequest(req) << reqBody;
Poco::Net::HTTPResponse res;
std::istream& rs = session.receiveResponse(res);
std::string resp;
std::vector<Poco::Net::HTTPCookie> cookies;
res.getCookies(cookies);
}
catch(const Poco::Net::SSLException& e)
{
std::cerr << e.what() << ": " << e.message() << std::endl;
}
catch(const std::exception& e)
{
std::cerr << e.what() << std::endl;;
}
};