Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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
8-1208000814
Дмитрий Белькевич
2008-04-12 15:46
2010.12.12
Сглаживание при вызове метода blt поверхности DirectX в Висте


3-1249327055
DmitrichJ
2009-08-03 23:17
2010.12.12
Организация поиска по документам в БД


2-1284896319
Первокурсница
2010-09-19 15:38
2010.12.12
Знаки препинания в строке ADOQuery1.SQL.Add( SET ... !!!


2-1284658401
HF-Trade
2010-09-16 21:33
2010.12.12
WinInet GET и POST запросы


15-1283754172
brother
2010-09-06 10:22
2010.12.12
Выбор 3G модема





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский