ich habe eine login Funktion geschrieben, die mich in ein cms via HTTP einloggen soll, und fals das funktioniert true zurück gibt. Ich kann durch den Fehlercode, den ich durch responseHeader.statusCode() bekomme herausfinden, ob ich mich erfolgreich eingeloggt habe. Das Problem ist aber, dass ich dies erst ausführen kann, wenn ich vom Server den Response bekommen habe. Meine login Funktion wartet aber nicht so lange, sondern ließt den Standardwert des statuscods aus, der ja nicht richtig sein kann.
Hier meine Funktion(en)
Code: Alles auswählen
//logt sich in Redaxo ein, und speichert das cookie der aktuellen session in rexCookie
bool redaxo::login(QString uname, QString upassword)
{
if(rexHost == "")
return false;
// POST login content
logincontent.append("page=structure&REX_ULOGIN=");
logincontent.append(uname);
logincontent.append("&REX_UPSW=");
logincontent.append(upassword);
// POST login header
loginheader.setRequest("POST", "/redaxo/index.php");
loginheader.setValue("Host", rexHost);
loginheader.setValue("User-Agent", "Redaxo backup 1.0");
loginheader.setValue("Cookie", "PHPSESSID=01mrb9cdnv2ust2348efjgt8l3");
loginheader.setContentType("application/x-www-form-urlencoded"); // important
loginheader.setContentLength(logincontent.length());
loginHTTP = new QHttp(this);
loginHTTP->setHost(rexHost);
loginHTTP->request(loginheader, logincontent);
connect(loginHTTP, SIGNAL(responseHeaderReceived(const QHttpResponseHeader &)),this, SLOT(readResponseHeader(const QHttpResponseHeader &)));
if(httpStatus == 302)
return true;
else
return false;
}
void redaxo::readResponseHeader(const QHttpResponseHeader &responseHeader)
{
QString cookie = responseHeader.value("set-cookie");
cookie = cookie.section(";", 0, 0);
if(cookie != "")
rexCookie = cookie;
httpStatus = responseHeader.statusCode();
}lg. RED