HttpClient() und HttpRequest()
Verfasst: So, 17. Apr 2022 14:51
Hallo,
aktuell versuche ich, von wget auf die Http...()-Klassen umzustellen.
Allerdings scheitere ich schon an der ersten Hürde. Es geht darum, eine automatisierte Anmeldung in einem Forum durchzuführen.
Hier mal die relevanten Code-Ausschnitte:
Das funktioniert, und ich bekomme auch die Einstiegscookies sowie einige Werte, die im Login-Formular eingebettet sind und bei der Anmeldung als POST-Daten übergeben werden müssen.
Im nächsten Schritt versuche ich, mich anzumelden:
Dazu wird die URL angepasst (ich habe die Anmeldung in Firefox durchgeführt und mittels F12 und "Network" protokolliert, was genau ausgetauscht wird), die Cookies aus dem ersten Schritt im HttpRequest()-Objekt hinterlegt. Dann folgen die Anmeldeparameter, ebenfalls aus dem Network-Trace "abgekupfert":
Beim Ausführen der :send()-Methode hängt sich das Programm dann auf. Strg-C hilft, aber das bringt mich im automatisierten Anmeldeprozess nicht weiter.
Da ja etliche hier schon damit arbeiten, habt Ihr (hoffentlich) einen Hinweis, was ich falsch mache, oder wie ich es besser gestalten kann?
aktuell versuche ich, von wget auf die Http...()-Klassen umzustellen.
Allerdings scheitere ich schon an der ersten Hürde. Es geht darum, eine automatisierte Anmeldung in einem Forum durchzuführen.
Hier mal die relevanten Code-Ausschnitte:
Code: Alles auswählen
// Seite lesen und Cookies erfragen
cDomain := "https://mein-ganz-tolles-forum.de"
oHTTP := HttpClient():new(cDomain)
oHTTPReq := HTTPRequestMessage():new(cDomain)
oResponse := oHTTP:send(oHTTPReq)
aCookies := oResponse:getCookies()
cContent := oResponse:getContent()
Im nächsten Schritt versuche ich, mich anzumelden:
Code: Alles auswählen
cReqPage := cDomain + "/login.php?do=login"
oHTTP := HttpClient():new(cReqPage)
oHTTPReq := HTTPRequestMessage():new(cReqPage)
nLen := Len(aCookies)
FOR nI := 1 TO nLen
oHTTPReq:setCookie(aCookies[nI])
NEXT
Code: Alles auswählen
oHTTPReq:setParameter("vb_login_username", "username")
oHTTPReq:setParameter("vb_login_password", "geheimespasswort")
oHTTPReq:setParameter("cookieuser", 1)
oHTTPReq:setParameter("s", "---") // aus cContent ausgelesen
oHTTPReq:setParameter("securitytoken", cSecToken) // dito.
oHTTPReq:setParameter("do", "login")
oHTTPReq:setParameter("vb_login_md5password", "---") // dito
oHTTPReq:setParameter("vb_login_md5password_utf", "---") // dito
oHTTPReq:setMethod("POST")
oHTTP:setMethod("POST")
oResponse := oHTTP:send(oHTTPReq)
Da ja etliche hier schon damit arbeiten, habt Ihr (hoffentlich) einen Hinweis, was ich falsch mache, oder wie ich es besser gestalten kann?