Главная страница
    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.037 c
2-1142237357
Gleb
2006-03-13 11:09
2006.03.26
как сделать анимацию в компоненте Chart


2-1141311808
undimon
2006-03-02 18:03
2006.03.26
Програмно нажать на кнопку во Флеш


2-1142174343
@gent
2006-03-12 17:39
2006.03.26
как распечатать memo ?


2-1141629214
Bratskiy
2006-03-06 10:13
2006.03.26
Выравнивание Label


2-1141724697
Der Nechk@ssoff
2006-03-07 12:44
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
Английский Французский Немецкий Итальянский Португальский Русский Испанский