ANTICHAT.XYZ    VIDEO.ANTICHAT.XYZ    НОВЫЕ СООБЩЕНИЯ    ФОРУМ  
Баннер 1   Баннер 2
Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей. Здесь обсуждаются безопасность, программирование, технологии и многое другое. Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
Вернуться   Форум АНТИЧАТ > Программирование > С/С++, C#, Delphi, .NET, Asm
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

{TidHTTP} как получить только заголовок.
  #1  
Старый 28.09.2008, 20:53
Аватар для Karapuziko
Karapuziko
Познающий
Регистрация: 20.01.2008
Сообщений: 47
Провел на форуме:
71868

Репутация: 72
По умолчанию {TidHTTP} как получить только заголовок.

Вот возник вопрос как мне получать только заголовок страницы а не весь content?
Если нельзя то хотябы на сокетах покажите буду благодарен.
 
Ответить с цитированием

  #2  
Старый 28.09.2008, 22:08
Аватар для neprovad
neprovad
Постоянный
Регистрация: 19.10.2007
Сообщений: 794
Провел на форуме:
1013791

Репутация: 711


По умолчанию

ммм, послать запрос HEAD странице, если HEAD "говорит"
Accept-Ranges: bytes
послать GET с указанием того, сколько надо считать
 
Ответить с цитированием

  #3  
Старый 29.09.2008, 01:37
Аватар для bons
bons
Участник форума
Регистрация: 20.12.2007
Сообщений: 295
Провел на форуме:
1777055

Репутация: 347
По умолчанию

на сокетах простой пример

Код:
program head;
{$APPTYPE CONSOLE}
uses windows, winsock;

var s:TSocket;
    initExit:BOOL=false;
    httpQuery:array[0..20]of char='HEAD / HTTP/1.0'#13#10#13#10#13#10;

{~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~}
//вывод текста описания ошибки и выход
procedure error(const ansiStr:string;ErrorCode:integer;bQuit:BOOL);
var Buffer: array[0..1023] of Char;
begin
 FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM or
  FORMAT_MESSAGE_ARGUMENT_ARRAY, nil, ErrorCode, 0, Buffer,
  SizeOf(Buffer), nil);

 CharToOem(@Buffer, @Buffer);
 write(ansiStr,'(',ErrorCode,') ',pChar(@Buffer));
 if bQuit then halt(1);
end;

{~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~}
//Вызывается при закрытии консоли клиента
function ClientConsoleEvent(dwCtrlType:cardinal):BOOL;stdcall;
begin
 initExit:=true;
 shutdown(s,SD_SEND OR SD_RECEIVE);
 closesocket(s);
 ClientConsoleEvent:=true;
end;

{~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~}
//Узнать IP по имени хоста
function GetIpFromName(szServerName:pChar):TInAddr;
type TaPInAddr = array [0..0] of PinAddr;
     PaPInAddr = ^TaPInAddr;
var phe: PHostEnt;
    pptr: PaPInAddr;
begin
 GetIpFromName.S_addr:=0;
 phe := GetHostByName(szServerName);
 if phe = nil then exit;
 pptr := PaPInAddr(phe^.h_addr_list);
 GetIpFromName:=pptr^[0]^;
end;

{~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~}
//Основная процедура клиента
procedure NetClient(const DestAddr:string;wPort:word);
var RemoteAddr:TSockAddr;
    buf:array[0..1023]of char;
    dwLen,hOut,beWritten:cardinal;
    ip:TInAddr;
    sPort:string;
begin
 ip:=GetIpFromName(pChar(DestAddr));
 if ip.S_addr=0 then
  error('# error at gethostbyname: ',WSAGetLastError,TRUE);

 fillchar(RemoteAddr, sizeof(RemoteAddr), 0);
 RemoteAddr.sin_family:=AF_INET;
 RemoteAddr.sin_port:=htons(wPort);
 RemoteAddr.sin_addr:=ip;
 str(wPort,sPort);

 writeln('# host: ',DestAddr);
 writeln('# ip  : ',inet_ntoa(ip));
 writeln('# port: ',wPort);

 s:=socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
 if s=INVALID_SOCKET then
  error('# error at socket: ',WSAGetLastError,true);

 SetConsoleCtrlHandler(@ClientConsoleEvent, TRUE);
 writeln('# connect...');
 if connect(s,RemoteAddr,sizeof(TSockAddr))<>0 then begin
  if not initExit then
   error('# error at connect: ',WSAGetLastError,false);
  closesocket(s);
  exit; 
 end;
 writeln('# success');
 send(s,httpQuery,sizeof(httpQuery),0);
 hOut:=GetStdHandle(STD_OUTPUT_HANDLE);
 while true do begin
  dwLen:=recv(s,buf,sizeof(buf),0);
  if (dwLen=cardinal(-1)) OR (dwLen=0) then begin
   if (not initExit)AND(dwLen=cardinal(-1)) then
    error('# error at recv: ',WSAGetLastError,false);
   if not initExit then closesocket(s);
   exit;
  end;
  WriteFile(hOut,buf,dwLen,beWritten,nil);
 end;
end;

{~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~}
var code:integer;
    wPort:word;
    InitData:TWSAData;
BEGIN
 if (ParamCount=0)OR(ParamCount>2) then begin
  writeln('Usage: head.exe host [port]');
  halt(0);
 end;
 if ParamCount=1 then wPort:=80
 else val(ParamStr(2),wPort,code);

 if WSAStartup(MakeWord(2,2),InitData)<>0 then
  error('# error at WSAStartup: ',WSAGetLastError,true);

 NetClient(ParamStr(1),wPort);
 WSACleanup;
END.
 
Ответить с цитированием

  #4  
Старый 26.10.2008, 20:39
Аватар для vid
vid
Новичок
Регистрация: 16.08.2006
Сообщений: 20
Провел на форуме:
64398

Репутация: 8
По умолчанию

idhttp.head )
 
Ответить с цитированием

  #5  
Старый 26.10.2008, 21:04
Аватар для cremator (c)
cremator (c)
Постоянный
Регистрация: 20.06.2008
Сообщений: 323
Провел на форуме:
1240829

Репутация: 165
Отправить сообщение для cremator (c) с помощью ICQ
По умолчанию

Зачем использовать вин апи если есть готовые компоненты
 
Ответить с цитированием

  #6  
Старый 27.10.2008, 00:06
Аватар для vid
vid
Новичок
Регистрация: 16.08.2006
Сообщений: 20
Провел на форуме:
64398

Репутация: 8
По умолчанию

Код:
  http := TIdHTTP.Create(nil);
  http.ConnectTimeout := 30000;
  http.ReadTimeout := 30000;
  html := '';
  try 
    http.Head(url);
  finally
    ResponseCode := http.ResponseCode;
    ResponseHead := http.ResponseText;
    http.Free;
  end;
 
Ответить с цитированием

  #7  
Старый 28.10.2008, 01:02
Аватар для Feonor
Feonor
Участник форума
Регистрация: 23.07.2008
Сообщений: 202
Провел на форуме:
3075657

Репутация: 122
Отправить сообщение для Feonor с помощью ICQ
По умолчанию

вот С#:
Код:
using System;
using System.Net;

class HeaderDemo
{
    public static void Main()
    {
        HttpWebRequest req = (HttpWebRequest)WebRequest.Create("http://www.osborne.com");
        HttpWebResponse resp = (HttpWebResponse)req.GetResponse();

        string[] names = resp.Headers.AllKeys;

        Console.WriteLine("{0,-20}{1}\n", "Имя", "Значение");
        foreach (string n in names)
            Console.WriteLine("{0,-20}{1}\n", n, resp.Headers[n]);
        resp.Close();
    }
}
 
Ответить с цитированием

  #8  
Старый 28.10.2008, 01:04
Аватар для GALIAFF
GALIAFF
Познающий
Регистрация: 28.09.2007
Сообщений: 56
Провел на форуме:
4328058

Репутация: 86
Отправить сообщение для GALIAFF с помощью ICQ
По умолчанию

Цитата:
Зачем использовать вин апи если есть готовые компоненты
лол. Девиз г***окодера

Последний раз редактировалось Jes; 28.10.2008 в 16:08..
 
Ответить с цитированием
Ответ



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Анатомия поисковой машины DJ.KilleR Статьи 0 02.07.2008 18:07
Гороскоп! Самый правдивый! =)) PEPSICOLA Болталка 41 25.03.2008 20:38
FAQ. Перед тем как задать вопрос. Fata1ex ICQ 1 04.11.2007 20:35



Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT.XYZ