Форум: "Начинающим";
Текущий архив: 2010.12.12;
Скачать: [xml.tar.bz2];
ВнизWinInet GET и POST запросы Найти похожие ветки
← →
HF-Trade © (2010-09-16 21:33) [0]Пытаюсь получить страничку из инета, выдернуть ссылку на капчу, и отправить Post.
Страничку я получаю, достаю ссылку на капчу, отправляют Post(мб не верно отправляю, или не верно формирую данные для Post запроса).
Хотя в ответ должен получить страничку, с информацией о неверно введенной капче(заведомо ввожу неверно ее).
Посмотрите плс, что не так делаю...
Код -
const
BufferSize = 1024;
Var
hInet, hSession, hRequest: HINTERNET;
Code: String;
Size, Index:Cardinal;
F: File;
Buffer: array[1..BufferSize] of Byte;
BufferLen: DWORD;
Buf, AHTML: String;
szData: AnsiString;
Captcha : AnsiString;
AHeader: String;
Cap: String;
begin
//Заголовок (то что выдал снифер, за исключением gzip в Accept-Encoding).
AHeader :=
"Accept: text/html, application/xml;q=0.9, application/xhtml+xml, image/png, image/jpeg, image/gif, image/x-xbitmap, */*;q=0.1" +#13#10 +
"Accept-Language: ru-RU,ru;q=0.9,en;q=0.8" +#13#10+
"Content-Type: application/x-www-form-urlencoded" + #13#10 +
"Accept-Charset: iso-8859-1, utf-8, utf-16, *;q=0.1" + #13#10+
"Accept-Encoding: deflate" +#13#10+
"Cookie2: $Version=1" + #13#10+
"Connection: Keep-Alive, TE" +#13#10+
"TE: deflate, gzip, chunked, identity, trailers";
hInet := InternetOpen("Opera/9.80 (Windows NT 5.1; U; ru) Presto/2.6.30 Version/10.62", INTERNET_OPEN_TYPE_PRECONFIG, nil, nil, 0);
hSession := InternetConnect(hInet, "xxx.ru", INTERNET_DEFAULT_HTTP_PORT, nil, "HTTP/1.0", INTERNET_SERVICE_HTTP, 0, 0);
hRequest := HttpOpenRequest(hSession, "GET", "/yyy/111/", nil, "http://xxx.ru", nil, INTERNET_FLAG_KEEP_CONNECTION or INTERNET_FLAG_RELOAD, 0);
//Получаю страничку
IF HttpSendRequest(hRequest, PChar(Aheader), Length(AHeader), nil, 0) Then
Begin
AssignFile(F, "C:\test.html");
Rewrite(F, 1);
repeat
InternetReadFile(hRequest, @Buffer, SizeOf(Buffer), BufferLen);
BlockWrite(F, Buffer, BufferLen)
until BufferLen = 0;
CloseFile(F);
end;
//Парсю страничку на ссылку для капчи
...
//Получаю капчу
hRequest := HttpOpenRequest(hSession, "GET", PChar(Captcha), nil, "http://xxx.ru", nil, INTERNET_FLAG_KEEP_CONNECTION or INTERNET_FLAG_RELOAD, 0);
IF HttpSendRequest(hRequest, PChar(AHeader), Length(AHeader), nil, 0) Then
Begin
AssignFile(F, "C:\test.jpg");
Rewrite(F, 1);
repeat
InternetReadFile(hRequest, @Buffer, SizeOf(Buffer), BufferLen);
BlockWrite(F, Buffer, BufferLen)
until
BufferLen = 0;
CloseFile(F);
end;
//Вытаскиваю данные для составления запроса POST в szData из ранее полученной странички -
szData := szData + "xxx=" + Buf + #13#10;
Cap := InputBox("Капча", "Введите символы с картинки:", "");
szData := szData + "cap=" + Cap + #13#10;
szData := szData + "yyy=" + Buf + #13#10;
...
// POST
hRequest := HttpOpenRequest(hSession, "POST", "/yyy/111/", nil, "http://xxx.ru", nil, INTERNET_FLAG_KEEP_CONNECTION or INTERNET_FLAG_RELOAD, 0);
IF HttpSendRequest(hRequest, PChar(AHeader), Length(AHeader), PChar(szData), Length(szData)) Then
Begin
//Получаю страничку с ответом
AssignFile(F, "C:\testPost.html");
Rewrite(F, 1);
repeat
InternetReadFile(hRequest, @Buffer, SizeOf(Buffer), BufferLen);
BlockWrite(F, Buffer, BufferLen)
until
BufferLen = 0;
CloseFile(F);
end;
InternetCloseHandle(hRequest);
InternetCloseHandle(hSession);
InternetCloseHandle(hInet);
← →
Медвежонок Пятачок © (2010-09-17 09:26) [1]весь этот код можно заменить несколькими строками, которые используют xmlhttprequest
← →
Palladin © (2010-09-17 09:38) [2]весь этот код можно заменить несколькими строками, которые используют IdHTTP
← →
Медвежонок Пятачок © (2010-09-17 11:32) [3]с идшттп строк будет больше ибо может быть прокси
← →
HF-Trade © (2010-09-17 18:34) [4]Про xmlhttpprequest не слышал) Почитаю...
IdHTTP, намного проще, но толи я кривой, толи хз, но в потоках начинает "тупить", на таймауты, вообще не реагирует, на многих форумах пишут не использовать idHttp в потоках.
прокси будет.
По сабжу, разобрался, - несовсем правильно заполнял zxData...
Чтобы не создавать еще одну тему -
Что за прокси такие Planetlab/CoDeeN ?
При запросе капчи из под этих прокси(уже после того как получаю страничку и парсю ее на ссылку для капчи), получаю сообщение(сейчас под рукой нет текста, чтобы скопировать), о Header, - просит, что то добавить в заголовок... Не пойму, че ему надо от меня=) ?
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2010.12.12;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.003 c