Главная страница
    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
15-1283256546
AlexDn
2010-08-31 16:09
2010.12.12
Поисковики и регион


15-1283776650
12
2010-09-06 16:37
2010.12.12
Что-то не понимаю tDateTime и Variant, раньше работало или путаю?


15-1283632175
Юрий
2010-09-05 00:29
2010.12.12
С днем рождения ! 5 сентября 2010 воскресенье


15-1283459378
Юрий
2010-09-03 00:29
2010.12.12
С днем рождения ! 3 сентября 2010 пятница


2-1284977449
123456
2010-09-20 14:10
2010.12.12
работа с treeview





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский