ClientSocket
Сохранить страницу с сайта (Internet) на диск.
Спасиба.
Подскажите как с помощью ClientSocket.
Сохранить страницу с сайта (Internet) на диск.
Спасиба.
Итак, подсказываю. Соединится с сервером думаю проблем возникнут не должно...
ClientSocket1->Address - адрес
ClientSocket1->Port = 80;
ClientSocket1->Active = true;
Устанавливаешь соединения, и как оно установлено, при помощи функции
ClientSocket1->Socket->SendText(Ansistring str);
Отправляешь параметры.
Str Должен содержать следующий код...(думаю где что заменить догадаешься, а также все это чудо должно обязательно кончится двумя переносами строки.
GET /website.htm HTTP/1.1
Host: 10.2.18.2:10
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.7.5) Gecko/20041217
Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
Accept-Language: en-us,en;q=0.7,ru;q=0.3
Accept-Charset: windows-1251,utf-8;q=0.7,*;q=0.7
Далее на эту запись сервер выдает ответ, в обработчик события на получение текста, то есть Read
Вставляешь функцию
AnsiString HTTP = Socket->ReceiveText();
HTTP будет содержать твою страницы. Как сохранить думаю проблем не будет.
P.S Там еще нужно будет удалить заголовки некоторые серверные, такие как куки, кодировка и др..
Вообщем ты должен будет найти первок вхождения тега <html> и все что до него удалить...
Благо ф-ции AnsiString помогают это сделать.
ClientSocket1->Host ="localhost";
ClientSocket1->Port =80;
ClientSocket1->Open();
AnsiString str ="GET ";
str +="/test/index__29_040829040828.htm";
str +=" HTTP/1.0\r\nHost: ";
str +="localhost";
str +="\r\nUser-agent: DownLoad\r\nAccept: */*\r\n\r\n";
ShowMessage(str);
ClientSocket1->Socket->SendText(str);
str ="";
const int LengthBuff =255;
char ch[LengthBuff];
for (int i=0; i<LengthBuff; i++)
{
ch='\0';
}
while (str.Pos("</html>") ==0 && str.Pos("</HTML>")==0)
{
ClientSocket1->Socket->ReceiveBuf(ch,LengthBuff-1);
ch[LengthBuff]='\0';
str +=ch;
}
а так НЕ работает:
ClientSocket1->Host ="localhost";
ClientSocket1->Port =80;
ClientSocket1->Open();
AnsiString str ="GET ";
str +="/test/index__29_040829040828.htm";
str +=" HTTP/1.0\r\nHost: ";
str +="localhost";
str +="\r\nUser-agent: DownLoad\r\nAccept: */*\r\n\r\n";
ClientSocket1->Socket->SendText(str);
str ="";
const int LengthBuff =255;
char ch[LengthBuff];
for (int i=0; i<LengthBuff; i++)
{
ch='\0';
}
while (str.Pos("</html>") ==0 && str.Pos("</HTML>")==0)
{
ClientSocket1->Socket->ReceiveBuf(ch,LengthBuff-1);
ch[LengthBuff]='\0';
str +=ch;
}