Главная страница
    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.043 c
2-1141894440
anubis
2006-03-09 11:54
2006.03.26
Сохранени Таблицы в .txt


4-1136650484
Signate
2006-01-07 19:14
2006.03.26
Запуск приложения принудительно на одном процессоре


3-1138914373
fedor
2006-02-03 00:06
2006.03.26
IB и FIB по разному реагируют на SQL-запрос?


15-1141724367
Антон К.
2006-03-07 12:39
2006.03.26
VPN


2-1142102496
Kolan
2006-03-11 21:41
2006.03.26
Как переименовать проект?





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