Http Request Cookie auslesen...
-
hey com,
undzwar versuche ich nach einen http request einen Cookie auszulesen, aber es wird mir nur das packet ausgegeben (in diesem fall halt der sourcecode der internet seite)hier mein code
HINTERNET inet = InternetOpen("MyAgent", INTERNET_OPEN_TYPE_PRECONFIG, NULL, NULL, 0); HINTERNET connection; HINTERNET request; unsigned long flags; unsigned long len; connection = InternetConnect(inet, TEXT(domainurl), INTERNET_DEFAULT_HTTP_PORT, NULL, NULL, INTERNET_SERVICE_HTTP, 0, 1); flags = INTERNET_FLAG_PRAGMA_NOCACHE; request = HttpOpenRequest(connection, "POST", TEXT(scripturl), NULL, NULL, NULL, flags, 1); HttpSendRequest(request, "Content-Type: application/x-www-form-urlencoded", 47, (void*)stringtosend, strlen(stringtosend)); std::stringstream CompleteBuffer; do{ char antwortbuffer[10000]; InternetReadFile(request, antwortbuffer, sizeof antwortbuffer, &len); antwortbuffer[len] = '\0'; CompleteBuffer << antwortbuffer; } while(len); InternetCloseHandle(request); InternetCloseHandle(connection); InternetCloseHandle(inet); MessageBox(NULL,CompleteBuffer.str().c_str(),"Server Antwort",MB_OK);
wie gesagt gibt
InternetReadFile(request, antwortbuffer, sizeof antwortbuffer, &len);
mir nicht das aus was ich will, da der komplette header fehlt...
mit wireshark seh ich aber das im header der cookie stehtauf sockets kann ich leider nicht umsteigen, weil es zu kompliziert ist da die webseite viele cookies haben will und auch viele sachen berechnet haben will und die winapi mir da viel arbeit abnimmt
deswegen muss ich diesen code verwenden allerdings das er mir den header anzeigt
danke
-
Mit HttpQueryInfo kommt man die Response-Header
-
Danke allerdings bekomme ich bei dem folgenden code immer nur ein H zurück und keinen Fehler oder sonstiges
char* getheaders(HINTERNET hRequest){
DWORD dwInfoLevel=HTTP_QUERY_RAW_HEADERS_CRLF;
DWORD dwInfoBufferLength=10;
char* pInfoBuffer=(char*)malloc(dwInfoBufferLength+1);
while(!HttpQueryInfo(hRequest,dwInfoLevel,pInfoBuffer,&dwInfoBufferLength,NULL)){
if (GetLastError()==ERROR_INSUFFICIENT_BUFFER){
free(pInfoBuffer);
pInfoBuffer=(char*)malloc(dwInfoBufferLength+1);
}else{
fprintf(stderr,"HttpQueryInfo failed, error = %d (0x%x)n",GetLastError(),GetLastError());
break;
}
}
pInfoBuffer[dwInfoBufferLength] = '';
return pInfoBuffer;
}Was kann ich da tun?
-
Steht das Projekt evtl auf unicode? Dann TCHAR statt char verwenden!
-
DANKE
es geht jetzt nachdem ich es auf multibyte umgestellt habe