Werte an html seite übergeben



  • Hi,
    ich würde wissen wie, bzw ob ich aus z.b einer dialoganwendung werte an eine html seite übergeben kann. sprich das ich zb username und passwort an den login auf der seite (zb www.lokalisten.de) eintragen kann. hab hier diesen eintrag gefunden http://www.c-plusplus.net/forum/viewtopic-var-t-is-86978.html der ja so ähnlich währe wie mein prob. hoffe mir kann da wer helfen



  • hi,
    verwende doch libcurl!!

    das läuft dann so ab:
    du sendet mit libcurl du machst zuerst einen GET Request an die page: http://www.lokalisten.de dann bekommst du eine JSESSIONID .... diese brauchst du für den nächsten request!!

    dann schickst du folgenden POST request an diese page:
    http://www.lokalisten.de/j_security_check

    POST /j_security_check HTTP/1.1
    Host: www.lokalisten.de
    User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.0.6) Gecko/20060728 Firefox/1.5.0.6
    Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,/;q=0.5
    Accept-Language: en-us,en;q=0.5
    Accept-Encoding: gzip,deflate
    Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
    Keep-Alive: 300
    Connection: keep-alive
    Referer: http://www.lokalisten.de/web/showHome.do;jsessionid=2F767B191B80A909A8847ECCDA99B3A0.server1
    Cookie: JSESSIONID=2F767B191B80A909A8847ECCDA99B3A0.server1
    Content-Type: application/x-www-form-urlencoded
    Content-Length: 37
    j_username=username&j_password=passwd

    username = dein benutzername
    passwd = dein passwort

    schaut dann ca so aus:

    #include <string>
    #include <iostream>
    #include <cstdio>
    #include <curl/curl.h>
    
    using namespace std;
    
    // libcurl.lib mitlinken!!
    
    // This is the writer call back function used by curl
    int writer(char *data, size_t size, size_t nmemb, string *buffer) {
    	// What we will return
    	int result = 0;
    
    	// Is there anything in the buffer?
    	if (buffer != NULL)
    	{
    		// Append the data to the buffer
    		buffer->append(data, size * nmemb);
    
    		// How much did we write?
    		result = size * nmemb;
    	}
    
    	return result;
    }
    
    int main()
    {
       CURL *curl_get;
       CURL *curl_post;
       CURLcode res;
       curl_slist *cookieptr;
       string cookieid;
       string buffer;
    
       curl_get = curl_easy_init();
       if(curl_get) {
         curl_easy_setopt(curl_get, CURLOPT_URL, "http://www.lokalisten.de");
    	 curl_easy_setopt(curl_get, CURLOPT_USERAGENT, "User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.0.6) Gecko/20060728 Firefox/1.5.0.6");
    	 curl_easy_setopt(curl_get, CURLOPT_COOKIEFILE, "");
    	 curl_easy_setopt(curl_get, CURLOPT_HEADER, 1);
    	 curl_easy_setopt(curl_get, CURLOPT_WRITEFUNCTION, writer);
    	 curl_easy_setopt(curl_get, CURLOPT_WRITEDATA, &buffer);
    
    	 res = curl_easy_perform(curl_get);
    
    	 if(res != CURLE_OK) {
    		curl_easy_cleanup(curl_get);
    		cout << "Error: " << curl_easy_strerror(res) << endl;
    		return -1;
    	 }	
    
    	 cout << "Server Response: " << '\n' << buffer << endl;
    
    	 curl_easy_getinfo(curl_get, CURLINFO_COOKIELIST, &cookieptr);
    	 if(cookieptr != 0) {
    		cookieid = cookieptr->data;
    		cookieid = cookieid.substr(34, 50);
    		cookieid = cookieid.replace(10, 1, "=");
    	 }
    
         /* always cleanup */
         curl_easy_cleanup(curl_get);
    
    	 buffer.clear();
    	 curl_post = curl_easy_init();
         if(curl_post) {
    		curl_easy_setopt(curl_post, CURLOPT_URL, "http://www.lokalisten.de/j_security_check");
    		curl_easy_setopt(curl_post, CURLOPT_USERAGENT, "User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.0.6) Gecko/20060728 Firefox/1.5.0.6");
    		curl_easy_setopt(curl_post, CURLOPT_COOKIE, cookieid.c_str());
    		curl_easy_setopt(curl_post, CURLOPT_POSTFIELDS, "j_username=username&j_password=passwd");
    		curl_easy_setopt(curl_post, CURLOPT_HEADER, 1);
    		curl_easy_setopt(curl_post, CURLOPT_WRITEFUNCTION, writer);
    		curl_easy_setopt(curl_post, CURLOPT_WRITEDATA, &buffer);
    
    		res = curl_easy_perform(curl_post);
    
    		if(res != CURLE_OK) {
    			curl_easy_cleanup(curl_post);
    			cout << "Error: " << curl_easy_strerror(res) << endl;
    			return -1;
    		}	
    
    		cout << "Server Response: " << '\n' << buffer << endl;
    
    		/* always cleanup */
    		curl_easy_cleanup(curl_post);
         }
       }
    

    in curl_easy_setopt(curl_post, CURLOPT_POSTFIELDS
    username durch deinen benutzernamen ersetzen!
    passwd durch dein passwort ersetzen!

    code ist jetzt nicht gerade schön;) soll nur zeigen wie es funzt;)

    cu



  • ok hab ich probiert. nur: ich hab noch nie mit libcurl gearbeitet, du anscheinend schon. da kommt immer das der die zlib1.dll nich erkennt. kp warum hab mir die neueste geholt. vllt kannste mir da weiterhelfen. danke



  • hi,
    welchen compiler nimmst du? hast du die source selber kompiliert: http://curl.haxx.se/download/curl-7.15.5.zip ?
    cu



  • hi,
    ich hab Microsoft Visual C++ 6.0 und hab die libcurl.dll hergenommen. werds jetz nochmal mit dem probieren wo du mir gesagt hast. mal schauen

    so, habs probiert. hat aber nich gefunzt. bringt mir 230 fehler, von wegen unerwartetes ende



  • hast du die library erstellt???
    und dann mit dem projekt mitgelinkt?



  • so geht jetz.
    muss ich dieses get request auch nochmal machen oda is des immer des selbe, sprich ich kann des oben hernehmen.
    und woran erkenn ich ob der login erfolgreich war ??


Anmelden zum Antworten