2009-09-30 21 views
13

HTTPS sunucusuna doğru bir POST nasıl yapılır ve oturum açma verileri doğru şekilde gömülür. Altında herhangi bir çerez (Wininet içinde yapar) döndürmez. POCO HTTP kütüphanesinin HTTP yönlendirmelerini nasıl işlediğini merak ediyorum. BöylePOCO C++ - NET SSL - HTTPS isteği nasıl yapılır

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;; 
    } 

}; 

cevap

10

Sen ayarlıyorsunuz içerik türü:

req.setContentType("Content-Type: application/x-www-form-urlencoded\r\n"); 

olmalıdır:

req.setContentType("application/x-www-form-urlencoded\r\n"); 
İlgili konular