Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Сети";
Текущий архив: 2006.03.26;
Скачать: [xml.tar.bz2];

Вниз

Помогите разобратся со скачкой файлов через прокси(TclientSocket)   Найти похожие ветки 

 
BANick   (2005-12-14 11:13) [0]

Здравствуйте!
мне нужно скачать с определенного урла сначала хтмл текст, понов проаналлизировав его скачать нужные картинки. пробовал через InternetOpenURL но картинки после этого уже были недоступны(для картинок урл генерится случайным образом и при втором InternetOpenURL на нужную картинку, картинка уже заблокирована) т.е. нужно созранять коннект с сервером как это делает браузер - мне посоветовали сокеты, но после SendText выдается ошибка 10060(т.е. ответа не получено) я подозреваю что это из за того что у меня соединение через проксю - подскажите какую нужно передавать строчку

procedure TForm1.SocketWrite(Sender: TObject;
 Socket: TCustomWinSocket);

begin
 Socket.SendText(Chtml);
end;

procedure TForm1.SocketRead(Sender: TObject;
 Socket: TCustomWinSocket);
begin
 FText := FText +  Socket.ReceiveText
end;

procedure TForm1.SocketConnecting(Sender: TObject;
 Socket: TCustomWinSocket);
begin
 FText := "";
end;

procedure TForm1.SocketConnect(Sender: TObject;
 Socket: TCustomWinSocket);
begin
Form1.Caption:=":)";
end;

procedure TForm1.SocketDisconnect(Sender: TObject;
 Socket: TCustomWinSocket);
var
s,a,t:string;
begin
тут должен анализироватся текст и запускатся новый сокет для скачивания картинки
end;

procedure TForm1.Button1Click(Sender: TObject);

begin

CS.Open;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
CS:=TClientSocket.Create(form1);
CS.Port:=80;
CS.Host:="www.ag.ru";
CS.OnConnecting:=SocketConnecting;
CS.OnDisconnect:=SocketDisconnect;
CS.OnRead:=SocketRead;
CS.OnConnecting:=SocketWrite;
CS.OnConnect:=SocketConnect;
Ghtml:="";
Ghtml:=Ghtml+"GET "+Webpage+" HTTP/1.1"#10#10;
Ghtml:=Ghtml+"Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, application/x-shockwave-flash, */*"#10#10;
Ghtml:=Ghtml+"Accept-Language: ru"#10#10;
Ghtml:=Ghtml+"User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; .NET CLR 1.1.4322)"#10#10;
Ghtml:=Ghtml+"Host: "+CS.Host+#10#10;
Ghtml:=Ghtml+"Connection: Keep-Alive"#10#10;

Gimg:="";
Gimg:=Gimg+"GET "+Webpage+" HTTP/1.1"#10#10;
Gimg:=Gimg+"Accept: */*"#10#10;
Gimg:=Gimg+"Referer: http://www.ag.ru"#10#10;
Gimg:=Gimg+"Accept-Language: ru"#10#10;
Gimg:=Gimg+"User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; .NET CLR 1.1.4322)"#10#10;
Gimg:=Gimg+"Host: "+CS.Host+#10#10;
Gimg:=Gimg+"Connection: Keep-Alive"#10#10;
Gimg:=Gimg+"Content-Type: image/jpeg"#10#10;

Chtml:=Ghtml;
end;



 
isasa ©   (2005-12-14 12:22) [1]

Смешались в кучу, кони, люди .....
http (proxy) - IP (socket) - две большие разницы.
Попробуй просто
InternetOpen -> InternetConnect -> HttpOpenRequest -> HttpSendRequest -> HttpQueryInfo -> InternetQueryDataAvailable -> InternetReadFile -> InternetCloseHandle

Сервер, возможно, использует куки (или SessionID, если это IIS+.NET) для идентификации сеанса.


 
BANick   (2005-12-14 15:16) [2]

спасибо!
я действительно решил проблему через InternetOpen и картинки доступны если в InternetOpenUrl поставить флаг INTERNET_FLAG_KEEP_CONNECTION
но столкнулся с тем что невозможно использовать InternetSetFilePointer, причем функция возвращает правильное значение

   InternetReadFile(hURL, @Buffer,
                    50, BufferLen);
InternetSetFilePointer(hURL,-10,nil,FILE_CURRENT,0);

она возвращает 40

   InternetReadFile(hURL, @Buffer,
                    50, BufferLen);
InternetSetFilePointer(hURL,1000,nil,FILE_BEGIN,0);

возвращает 1000
но любые вызовы после этого
   InternetReadFile не приводят к считыванию(BufferLen=0)
вопрос у меня такой - можно ли какнить это победить или это зависит исключительно от сервера к которому коннекчусь и нужно смирится и читать подряд с первого байта?



Страницы: 1 вся ветка

Форум: "Сети";
Текущий архив: 2006.03.26;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.46 MB
Время: 0.049 c
1-1140501734
Димон
2006-02-21 09:02
2006.03.26
Ошибки в проекте


6-1134547980
BANick
2005-12-14 11:13
2006.03.26
Помогите разобратся со скачкой файлов через прокси(TclientSocket)


1-1140450313
Slaga
2006-02-20 18:45
2006.03.26
Прорисовка одной строки в ListBox e


15-1141457447
Pazitron_Brain
2006-03-04 10:30
2006.03.26
POP и IMAP


2-1141730384
Новичоккк
2006-03-07 14:19
2006.03.26
Проблема с Handle процесса





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