http post request schicken...
-
moin, ich will diesen post request an den server schicken, aber was mach ich mit dem Cookie: JSESSIONID=...? cookie anlegen, wie? cookie daten senden?!? vielleicht jemand erfahrung damit?
der post request:
POST /webkeeper/Controller HTTP/1.1 Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, application/x-gsarcade-launch, */* Referer: https://www.myzone.at/webkeeper/Controller Accept-Language: de-at Content-Type: application/x-www-form-urlencoded Accept-Encoding: gzip, deflate User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; .NET CLR 1.1.4322) Host: www.myzone.at Content-Length: 85 Connection: Keep-Alive Cache-Control: no-cache Cookie: JSESSIONID=7FB760885B72D017E8AE4FEBB043FA7E action=login&login=Anmelden&brand=myzone&username=xxxx&password=xxxx&x=39&y=5
ok dann, thx so far.....n8
-
falsches forum
-
Dieser Thread wurde von Moderator/in HumeSikkins aus dem Forum C++ in das Forum Webzeugs verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
hi,
ich will mit einen GET bzw einen POST request an einen https server schicken,
hab mir gedacht ich nehme da diese lib: libcurl - a multiprotocol file transfer library -> http://curl.haxx.se/libcurl/hat jemand schon sowas ähnliches gemacht, vielleicht auch mit dieser lib? wäre dankbar, wenn sich jemand meldet!
woher weiss ich das das verschlüsselungsverfahren, welches der server verwendet???also im prinzip läuft das ja so ab:
(browser) request -> versch.request ----- (server) entsch.request -> requestlg
-
Also ich habe das schonmal mit dem C++Builder gemacht mit der wininet.h
Willst Du das in C++ machen ?if (!bProxy) { if (asPHONEBOOK != "direkte Internetverbindung") { hInet = InternetOpen(asPHONEBOOK.c_str(), 0, NULL, 0, 0); } else { hInet = InternetOpen(NULL, INTERNET_OPEN_TYPE_DIRECT, NULL, 0, 0); } } else { hInet = InternetOpen(NULL, INTERNET_OPEN_TYPE_PRECONFIG, asPROXY.c_str(), asPROXYPORT.c_str(), 0); } frmMain->HOLE_ZUGANGSATENfrmMain->asUser); if (frmMain->asPasswort == "" || frmMain->asUser == "") { //Fehler } else { if(hInet!=NULL) { frmMain->bErrorBeimVerbindungsaufbau=false; hConn = InternetConnect(hInet, asSERVER.c_str(), iPORT, "", "", INTERNET_SERVICE_HTTP, 0, 0); if(hConn) { asURL = asURL + "?strPass=" + frmMain->asPasswort + "&strUser=" + frmMain->asUser; hReq = HttpOpenRequest(hConn, "POST", asURL.c_str(), NULL, NULL, NULL, INTERNET_FLAG_KEEP_CONNECTION |INTERNET_FLAG_TRANSFER_BINARY, 0); if(hReq) { frmMain->bErrorBeimSeitenaufbau=false; bSend = HttpSendRequest(hReq, asHeader.c_str(), strlen(asHeader.c_str()), asPostData.c_str(), strlen(asPostData.c_str())); if(!bSend) { frmMain->bErrorBeimUebertragen=true; DWORD dw = GetLastError(); frmMain->HOLE_FEHLERBESCHREIBUNG(dw); } else { frmMain->bErrorBeimUebertragen=false; } } else { frmMain->bErrorBeimSeitenaufbau=true; } }//if(hConn) else { DWORD dw = GetLastError(); frmMain->HOLE_FEHLERBESCHREIBUNG(dw); } }//if(hInet!=NULL) else { frmMain->bErrorBeimVerbindungsaufbau=true; DWORD dw = GetLastError(); frmMain->HOLE_FEHLERBESCHREIBUNG(dw); } }//else if (bSend) { bREQ = HttpQueryInfo(hReq, HTTP_QUERY_STATUS_CODE, szSizeBuffer, &dwLengthSizeBuffer, NULL); } else { DWORD perror; perror=GetLastError(); FEHLER_BEIM_SENDEN(); }
hier bekommst du die dll: http://www.dll-files.com/dllindex/dll-files.shtml?wininet
-
hi, ja will das in c++ coden...
aber ich will den GET oder POST request an einen HTTPS server schicken... da brauch ich ja OpenSSL oder diese eine lib...schon damit was gemacht?
cu
-
c++ coder schrieb:
hi,
ich will mit einen GET bzw einen POST request an einen https server schicken,
hab mir gedacht ich nehme da diese lib: libcurl - a multiprotocol file transfer library -> http://curl.haxx.se/libcurl/hat jemand schon sowas ähnliches gemacht, vielleicht auch mit dieser lib? wäre dankbar, wenn sich jemand meldet!
woher weiss ich das das verschlüsselungsverfahren, welches der server verwendet???also im prinzip läuft das ja so ab:
(browser) request -> versch.request ----- (server) entsch.request -> requestlg
ja du "musst" die lib nehmen. ( oder du schreibst dir selber eine :p )
mit der habe ich schon über http(s) POST methoden zum server verschickt und requests bekommen. lad dir die runter und schau dir die bsp an.gute sbp kriegst hier
http://www.koders.com/musst halt da suchen, der direktlink gayt irgendwie nicht so
ich habe die post alle mit curl_easy_.. gemacht
http://curl.mons-new-media.de/libcurl/c/curl_easy_setopt.html#CURLOPTWRITEDATA
-
Mit dem Code den ich dort oben gepostet habe sende ich einen "POST" Request.
für Dich müßte das etwa so aussehen:
asURL = asURL + "https://www.myzone.at/webkeeper/Controller?action=login&login=Anmelden&brand=myzone&username=xxxx&password=xxxx&x=39&y=5" hReq = HttpOpenRequest(hConn, "POST", asURL.c_str(), NULL, NULL, NULL, INTERNET_FLAG_KEEP_CONNECTION |INTERNET_FLAG_TRANSFER_BINARY, 0);
Was Du bezueglich SSL machen mußt weiss ich auch nicht so genau, aber Du kannst ja mal in die Doku schauen es gibt im netz eine Beschreibung der wininet.dll bzw "Windows win32 Internet Functions".
Habe sie jetzt auf anhieb nicht gefunden, aber ich habe sie mir mal vor einiger zeit runter geladen.
Wenn Du nichts findest kann ich sie Dir auch mailen, mußt mir halt nur Deine Email-Adresse sagen.Mit dem Cookie setzen bin ich überfragt, da ich eigendlich der Meinung war das das nicht von einem Aufruf gesteuert werden kann sonder nur von dem Webserver selber, aber ich lerne auch gerne dazu sollte das nicht so sein.
Die Flags INTERNET_FLAG_KEEP_CONNECTION |INTERNET_FLAG_TRANSFER_BINARY brauchst du bestimmt nicht aber evtl andere.
Bei mir waren die nötig, weil ich dateien sende.
-
was willst du eigentlich machen? wenn du z.b. deine banküberweisung oder so per tool oder script schnell tätigen willst, dann ist das bissle anders.
der browser weiss imho nicht wie er verschlüsseln soll. FF kann doch nicht von jedem server weltweit alle verschl wissen.
kannst ja bei dem server admin anfragen wie du das machst. du selbst verschlüssl ja nicht. du machst das z.b. über ssl und dazu brauchst du ein Certificate. wenn du das hast, kann libcurl dies einsetzen.
das was ich gemacht habe, war firnmenintern ( unser server ) und da wars es bissle anders. da hab ich z.b. ne fkt aufgerufen die aus den eingabedaten eine gültige SID macht und die beim POST benutzt.
libcurl easy setzt du in etwa so ein
CURL *curl; CURLcode res; curl_global_init(CURL_GLOBAL_ALL); curl = curl_easy_init(); if ( curl ){ struct MemoryStruct chunk; ... .. curl_easy_setopt(curl, CURLOPT_URL, serverAddress_.c_str() ); //https://192.168.0.33/bin... /* send all data to this function */ curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, WriteMemoryCallback); /* we pass our 'chunk' struct to the callback function */ curl_easy_setopt(curl, CURLOPT_WRITEDATA, (void *)&chunk); if( requestBody.size() > 0 ){ response_=""; curl_easy_setopt( curl, CURLOPT_POST, 1); curl_easy_setopt( curl, CURLOPT_POSTFIELDSIZE, requestBody.size() ); curl_easy_setopt( curl, CURLOPT_POSTFIELDS, requestBody.c_str() ) ; .... ... /* some servers don't like requests that are made without a user-agent field, so we provide one */ curl_easy_setopt(curl, CURLOPT_USERAGENT, "libcurl-agent/1.0"); //trick to make ssl connection without installing the server's CA certificate: //set disabel SSL_VERIFYPEER and enable SSL_VERIFYHOST. Necessary for libcurl > 7.10 curl_easy_setopt( curl, CURLOPT_SSL_VERIFYPEER, 0); curl_easy_setopt( curl, CURLOPT_SSL_VERIFYHOST, 1); ... if( !httpUsername_.empty() ){ std::string userpwd = httpUsername_ + ":" + httpPassword_; curl_easy_setopt( curl, CURLOPT_USERPWD, userpwd.c_str()); if ( NoCaseEqual( httpAuthenticationMethod_, "any") ) curl_easy_setopt(curl, CURLOPT_HTTPAUTH,CURLAUTH_ANY); else if ( NoCaseEqual( httpAuthenticationMethod_, "basic") ) curl_easy_setopt(curl, CURLOPT_HTTPAUTH,CURLAUTH_BASIC); else if ( NoCaseEqual( httpAuthenticationMethod_, "digest") ) curl_easy_setopt(curl, CURLOPT_HTTPAUTH,CURLAUTH_DIGEST); else if ( NoCaseEqual( httpAuthenticationMethod_, "ntlm") ) curl_easy_setopt(curl, CURLOPT_HTTPAUTH,CURLAUTH_NTLM ); else { curl_easy_setopt(curl, CURLOPT_HTTPAUTH,CURLAUTH_ANY); } } if ( cookie_.size() > 0) { curl_easy_setopt(curl, CURLOPT_COOKIE, cookie_); } response_=""; res = curl_easy_perform(curl); if ( res == 0 ) { result = true; response_ = chunk.memory; } curl_easy_cleanup(curl);
die variablen (username, requestbody ect musst schon selbst vorher setzen
)
-
hi,
danke für deine hilfe;-)das will ich machen ( also ne sms schicken;-) ) hab bissi mit der klasse rum probiert, aber da will noch was nicht...mal schauen...
also 2 post request und 1 get request brauch ich....und ich muss mir diese JSESSIONID merken beim ersten reply!cu+thx
----------------------- das will ich machen: ----------------------- auf die seite browsen: ----------------------------- GET /webkeeper/Controller HTTP/1.1 Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, application/x-gsarcade-launch, */* Accept-Language: de-at Accept-Encoding: gzip, deflate User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; .NET CLR 1.1.4322) Host: www.myzone.at Connection: Keep-Alive reques vom server: ----------------------- HTTP/1.0 200 OK Date: Tue, 21 Jun 2005 18:17:50 GMT Server: Apache/2.0.52 (Unix) mod_ssl/2.0.52 OpenSSL/0.9.7d mod_jk2/2.0.4 Set-Cookie: JSESSIONID=57624CE7672877DC0A8930591F678F01; Path=/webkeeper; Secure Content-Type: text/html; charset=ISO-8859-1 Connection: close einloggen: --------------------------------- POST /webkeeper/Controller HTTP/1.1 Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, application/x-gsarcade-launch, */* Referer: https://www.myzone.at/webkeeper/Controller Accept-Language: de-at Content-Type: application/x-www-form-urlencoded Accept-Encoding: gzip, deflate User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; .NET CLR 1.1.4322) Host: www.myzone.at Content-Length: 86 Connection: Keep-Alive Cache-Control: no-cache Cookie: JSESSIONID=57624CE7672877DC0A8930591F678F01 action=login&login=Anmelden&brand=myzone&username=user&password=passwdb&x=35&y=18 Post-Request senden: ------------------------- POST /webkeeper/Controller HTTP/1.1 Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, application/x-gsarcade-launch, */* Referer: https://www.myzone.at/webkeeper/Controller?action=sms Accept-Language: de-at Content-Type: application/x-www-form-urlencoded Accept-Encoding: gzip, deflate User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; .NET CLR 1.1.4322) Host: www.myzone.at Content-Length: 72 Connection: Keep-Alive Cache-Control: no-cache Cookie: JSESSIONID=57624CE7672877DC0A8930591F678F01 psid=0&smsnetz=004412331&handynr=111111&nachr=test&num=131&action=sendsms request vom server: ----------------------- HTTP/1.0 200 OK Date: Tue, 21 Jun 2005 18:19:51 GMT Server: Apache/2.0.52 (Unix) mod_ssl/2.0.52 OpenSSL/0.9.7d mod_jk2/2.0.4 Content-Type: text/html; charset=ISO-8859-1 Connection: close
-
Ich sehe hier kein HTTPS.
-
Wieso nicht? Er will doch auf die Seite "https://www.myzone.at/webkeeper/Controller?action=sms" ...
-
@newk.
wo bekommst den requestBody?
serverAddress_ muss ja bei mir dann sein: "https://212.152.190.183/webkeeper/Controller" müsste eigentlich ok sein...
warum prüfst du da eigentlich auf: httpUsername_.empty() und cookie_.size() > 0 ?welche vers von curl hast du gibt ja auch versionen wo kein ssl dabei ist?
cu
-
@newk.:
noch da?cu
-
Denn kannst du selber schreiben
oder von der console übernehmen oder wie auch immer
muss halt http konform sein
du kannst am besten eine fkt schreiben
SetRequestBody die dir das konform macht
sprich keine leerzeichen sonder "?" ect. ich hab da eine fertige fkt genommen oder kannst auch selber coden
-
Ich hab die adr. ect schon gesetzt mit
SetAdress
ect.
dann habe ich die ganzen werte in ein array gespeichert und dann eine fkt geschrieben die mir dass dann zusammenschreibt so dass im body dann alles steht wie z.b. adresse,Accept,sid,text und dass halt url konform
-
kannst du mal bitte den kompl. code posten ich bekomme keine antwort vom server...warum auch immer...;-(
cu