Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Работа с сетью в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 05.06.2011, 12:38   #11
_PROGRAMM_
Участник клуба
 
Аватар для _PROGRAMM_
 
Регистрация: 30.07.2009
Сообщений: 1,601
По умолчанию

Socket.SendText('HTTP/1.1 401 Unauthorized' + #$0D + #$0A);
Socket.SendText('Server: MyServ' + #$0A);
Socket.SendText(#$0D+#$0A);

socket.SendText('<html>Текст</html>');
socket.Close;

В мире нет вечных двигателей, зато есть вечные тормоза...

Блог
_PROGRAMM_ вне форума Ответить с цитированием
Старый 05.06.2011, 12:52   #12
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

это по вашему запрос?
это ответ который вы получить должны, в случае необходимости авторизации.
кстати код 401 и говорит браузеру что нужно запросить пароль и логин.
http://ru.wikipedia.org/wiki/Список_...ояния_HTTP#401
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 05.06.2011, 14:03   #13
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,713
По умолчанию

Не вижу смысла формировать спец-окно авторизации, когда можно самому серверу сформировать такую страничку на запрос с браузера:
Код:
<div id="login_form">
  <div id="border">
  <h1>Авторизация ...</h1><div style="padding:4px"></div>
  <form method="post" action="">
  Имя пользователя :<br />
  <input type="text" name="login_name" id="login" class="edit" /><div style="padding:4px"></div>

  Пароль :<br />

  <input type="password" name="login_password" id="password" class="edit" /><div style="padding:4px"></div>

  <input type="submit" value="войти" /> <input type="button" value="закрыть" onclick="document.getElementById('login_form').style.display='none'; return false;" /><div style="padding:4px"></div>
  <a href="/remind/">напомнить пароль</a>

        <input name="login" type="hidden" id="login" value="submit" />
  </form>
 </div>
</div>
например при первом входе на IP-ник, где расположен WEB-сервер. Если уж так хочется вываливающееся окно, то его можно сформировать JAVA-скриптом.
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation
raxp вне форума Ответить с цитированием
Старый 05.06.2011, 18:54   #14
_PROGRAMM_
Участник клуба
 
Аватар для _PROGRAMM_
 
Регистрация: 30.07.2009
Сообщений: 1,601
По умолчанию

Цитата:
например при первом входе на IP-ник, где расположен WEB-сервер. Если уж так хочется вываливающееся окно, то его можно сформировать JAVA-скриптом
Ну это понятно. Я хочу сформировать такое окошко. И узнать каким образом модем получает логин и пароль, чтобы сделать под него клиента.
Цитата:
это по вашему запрос?
нет. Это сервер отправляет браузеру.
Запрос клиента к серверу яндекс вот
Код:
procedure TForm1.ClientConnect(Sender: TObject; Socket: TCustomWinSocket);
begin
Client.Socket.SendText('GET / HTTP/1.1');
Client.Socket.SendText('Host: yandex.ru');
Client.Socket.SendText('User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; ru-RU) AppleWebKit/533.21.1 (KHTML, like Gecko) Version/5.0.5 Safari/533.21.1');
Client.Socket.SendText('Accept: text/html');
Client.Socket.SendText('Accept-Encoding: gzip, deflate');
Client.Socket.SendText('Connection: keep-alive');

//Client.Socket.Close;
end;
С яндексом я тестирую. Клиент ничего не принимает.
Кто знает, ответе, пожалуйста, почему.

В мире нет вечных двигателей, зато есть вечные тормоза...

Блог

Последний раз редактировалось _PROGRAMM_; 05.06.2011 в 18:58.
_PROGRAMM_ вне форума Ответить с цитированием
Старый 05.06.2011, 22:12   #15
mss
Заблокирован
 
Регистрация: 27.05.2010
Сообщений: 1,099
По умолчанию

Ну заглянул..

Несуразности:

1. Какое отношение к взаимодействию с веб-сервером модема имеет TServerSocket ?

Грубые ошибки:

Client.Active:=True; // это лишь ЗАПУСК процедуры коннекта

// и не дождавшись фактического коннекта ты посылаешь запрос в никуда.

Client.Socket.SendText('GET HTTP/1.1'+#13#10+'connection:kep-alive'); // http-запрос должен завершаться двойной последовательностью CRLF - где она ? Протокол-то будем штудировать прежде чем лепить код ?
ГДЕ анализ РЕЗУЛЬТАТА, который возвращает функциональнеый метод SendText - мыши съели ? Справку-то будем штудировать, прежде чем лепить код ?
mss вне форума Ответить с цитированием
Старый 06.06.2011, 08:10   #16
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

интересна стандартная авторизация?
смотрите:
1)сначало просто запрос от клиента
Код:
GET / HTTP/1.1
User-Agent: Opera/9.80 (Windows NT 5.1; U; ru) Presto/2.6.30 Version/10.63
Host: ***
Accept: text/html, application/xml;q=0.9, application/xhtml+xml, image/png, image/jpeg, image/gif, image/x-xbitmap, */*;q=0.1
Accept-Language: ru-RU,ru;q=0.9,en;q=0.8
Accept-Charset: iso-8859-1, utf-8, utf-16, *;q=0.1
Accept-Encoding: deflate, gzip, x-gzip, identity, *;q=0
Referer: ***
Connection: Keep-Alive
ответ сервера:
Код:
HTTP/1.1 401 Authorization Required
Date: Mon, 06 Jun 2011 04:05:26 GMT
Server: Apache
WWW-Authenticate: Basic realm="RESTRICTED"
Vary: Accept-Encoding
Content-Encoding: gzip
Content-Length: 290
Keep-Alive: timeout=5, max=100
Connection: Keep-Alive
Content-Type: text/html; charset=iso-8859-1

<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>401 Authorization Required</title>
</head><body>
<h1>Authorization Required</h1>
<p>This server could not verify that you
are authorized to access the document
requested.  Either you supplied the wrong
credentials (e.g., bad password), or your
browser doesn't understand how to supply
the credentials required.</p>
</body></html>
первое красное это код который означает что нужна авторизация
второе это сообщение которое показано пользователю.
опера ХТМЛ код обабатывает только если жмешь отмена в окне авторизации.
Код:
GET / HTTP/1.1
User-Agent: Opera/9.80 (Windows NT 5.1; U; ru) Presto/2.6.30 Version/10.63
Host: ***
Accept: text/html, application/xml;q=0.9, application/xhtml+xml, image/png, image/jpeg, image/gif, image/x-xbitmap, */*;q=0.1
Accept-Language: ru-RU,ru;q=0.9,en;q=0.8
Accept-Charset: iso-8859-1, utf-8, utf-16, *;q=0.1
Accept-Encoding: deflate, gzip, x-gzip, identity, *;q=0
Authorization: Basic bG9naW46cGFzcw==
Referer: ***
Connection: Keep-Alive, TE
TE: deflate, gzip, chunked, identity, trailers
ИнДи умеет с этим рабботать, посмотрите там.
то логин и пароль вместе.

ну а дальше либо сервер снова требует, либо пускает.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 07.06.2011, 12:29   #17
_PROGRAMM_
Участник клуба
 
Аватар для _PROGRAMM_
 
Регистрация: 30.07.2009
Сообщений: 1,601
По умолчанию

Значение
Цитата:
HTTP/1.1 401
WWW-Authenticate: Basic realm="RESTRICTED"
я нашел, и у меня получилось заставить браузер показать это окно.
Код:
Authorization: Basic bG9naW46cGFzcw==
Т.к. браузер у меня, наконец-то, показал окно авторизации. Все что клиент(браузер) мне отправляет, записываю в memo. Я подумал:"Как же он отправляет логин и пароль?". Начал вписывать разные значения в окно авторизации и попал на эту строку(Authorization: Basic bG9naW46cGFzcw==). Это я о себе рассказал.. В пост я давно не заглядывал т.к. этим занимался.
Цитата:
ИнДи умеет с этим рабботать, посмотрите там.
то логин и пароль вместе.
Спасибо. Задумаюсь. Под ИнДи имеете в виду idhttp? А может можно как-то самому расшифровать?

Я что сейчас хочу. Для дальнейших опытов мне нужно научиться отправлять запросы серверу. Я приводил код
Код:
Client.Socket.SendText('GET / HTTP/1.1');
Client.Socket.SendText('Host: yandex.ru');
Client.Socket.SendText('User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; ru-RU) AppleWebKit/533.21.1 (KHTML, like Gecko) Version/5.0.5 Safari/533.21.1');
Client.Socket.SendText('Accept: text/html');
Client.Socket.SendText('Accept-Encoding: gzip, deflate');
Client.Socket.SendText('Connection: keep-alive');
Мне хочется получить страничку яндекса, но он мне ничего не дает. Не пойму в чем ошибка.
Буду благодарен. Находится в событии onConnect

В мире нет вечных двигателей, зато есть вечные тормоза...

Блог

Последний раз редактировалось _PROGRAMM_; 07.06.2011 в 12:31.
_PROGRAMM_ вне форума Ответить с цитированием
Старый 07.06.2011, 12:57   #18
mss
Заблокирован
 
Регистрация: 27.05.2010
Сообщений: 1,099
По умолчанию

Цитата:
Не пойму в чем ошибка
В том что ты упорно не желаешь читать спецификацию http.
mss вне форума Ответить с цитированием
Старый 07.06.2011, 13:00   #19
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Цитата:
А может можно как-то самому расшифровать?
1)инди Open-Source
2)читаем RFC спецификацию.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 07.06.2011, 16:14   #20
_PROGRAMM_
Участник клуба
 
Аватар для _PROGRAMM_
 
Регистрация: 30.07.2009
Сообщений: 1,601
По умолчанию

Цитата:
В том что ты упорно не желаешь читать спецификацию http.
Читал я в Википедии, но что-то не так сделал. Неужеле тяжело указать на ошибку?
mss. Действия происходят в onConnect
Вложения
Тип файла: zip Клиент к роутеру.zip (231.5 Кб, 14 просмотров)

В мире нет вечных двигателей, зато есть вечные тормоза...

Блог
_PROGRAMM_ вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
winskock и РОУТЕР spydark91 Работа с сетью в Delphi 43 09.06.2011 00:11
роутер Bustle Компьютерное железо 4 29.12.2010 20:51
Роутер werser Помощь студентам 1 07.03.2010 15:38
Модем роутер Pedro Компьютерное железо 2 06.11.2009 13:35
победить роутер nick2115 Помощь студентам 5 16.11.2008 00:54