Модераторы: Snowy, Poseidon, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> WINSOCK и код ответа сервера, как получить 200,301,404.. 
:(
    Опции темы
SergXP
Дата 11.12.2009, 16:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 150
Регистрация: 16.4.2008

Репутация: нет
Всего: нет



Добрый вечер.
Скажите пжл, как получить ответ(200,303,404 и тд) сервера используя winsock? 
--------------------
База IMEI-номеров украденных и утерянных мобильных телефоновhttp://imeis.net.ru/
PM MAIL WWW ICQ   Вверх
Демо
Дата 11.12.2009, 17:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1278
Регистрация: 3.11.2005

Репутация: 3
Всего: 50



Цитата(SergXP @  11.12.2009,  16:41 Найти цитируемый пост)
Скажите пжл, как получить ответ(200,303,404 и тд) сервера используя winsock? 


Что значит получить?
Тебе сервер должен возвращать эти ошибки.


--------------------
    
PM MAIL ICQ Skype   Вверх
SergXP
Дата 11.12.2009, 17:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 150
Регистрация: 16.4.2008

Репутация: нет
Всего: нет



Демо,  smile 
Код

{создаем сокет}
     s:=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);
     FillChar(addr, SizeOf(sockaddr_in), 0);
     addr.sin_family:=AF_Inet;
     addr.sin_port:=htons(80);
     addr.sin_addr.S_addr:=inet_addr(PChar('<тут ip>'));
     {коннектимся}
     Connect(S,addr,SizeOf(TSockAddr));
     sendbuff := 'GET http://<тут адрес>' + str;
     sendbuff := sendbuff + ' HTTP/1.0'#13#10#13#10;
     {шлем запрос}
     send(s, sendbuff[1] , Length(sendbuff), 0);
     {считываем ответ}
     reply:=recvdata(s);
     {закрываем сокет}
     closesocket(s);


получаю ответ:
Код

HTTP/1.1 200 Ok
Connection: Close
Cache-control: no-cache, max-age=0
Expires: Thu, 01 Jan 1970 00:00:01 GMT
Content-Type: text/xml; charset=windows-1251


как мне выбрать только код ответа?
--------------------
База IMEI-номеров украденных и утерянных мобильных телефоновhttp://imeis.net.ru/
PM MAIL WWW ICQ   Вверх
Демо
Дата 11.12.2009, 17:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1278
Регистрация: 3.11.2005

Репутация: 3
Всего: 50



Цитата(SergXP @  11.12.2009,  17:25 Найти цитируемый пост)
как мне выбрать только код ответа?


Только обработать строку
Цитата(SergXP @  11.12.2009,  17:25 Найти цитируемый пост)
HTTP/1.1 200 Ok


и самому получить из этой строки код.


--------------------
    
PM MAIL ICQ Skype   Вверх
SergXP
Дата 11.12.2009, 18:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 150
Регистрация: 16.4.2008

Репутация: нет
Всего: нет



вот, обработал..вроде работает))
Код

      response:= Pos ('HTTP/1.1', reply);
      if (response<>0) then
      begin
        Delete(reply, 1, 9);
        response := Pos(' ', reply);
        response := StrToInt(Copy(reply2, 1, response - 1));
         Form1.Memo4.Lines.Add(IntToStr(response));
      end;


а если допустим код будет не 200, а 404, то результат обрежется и покажет 404? т.е. данный метод универсален?
--------------------
База IMEI-номеров украденных и утерянных мобильных телефоновhttp://imeis.net.ru/
PM MAIL WWW ICQ   Вверх
Демо
Дата 11.12.2009, 19:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1278
Регистрация: 3.11.2005

Репутация: 3
Всего: 50



Цитата(SergXP @  11.12.2009,  18:31 Найти цитируемый пост)
а если допустим код будет не 200, а 404, то результат обрежется и покажет 404? т.е. данный метод универсален?


Для протокола HTTP - конечно. (но вкупе с обработкой ошибок самого сокета - WSAGetLastError).


--------------------
    
PM MAIL ICQ Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Сети"
Snowy
Poseidon
MetalFan

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делится вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи

Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Snowy, Poseidon, MetalFan.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Сети | Следующая тема »


 




[ Время генерации скрипта: 0.0606 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.