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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 30.06.2013, 18:42   #1
tolprog
Пользователь
 
Регистрация: 29.03.2013
Сообщений: 33
Вопрос 3 вопроса ???

1) Подскажите как можно узнать время выполнения get-запроса в программе, записать значение в переменную???

2)
Код:
 begin
idhttp1:=TIdHTTP.create(nil);
data:=tstringlist.Create;
idhttp1.Host:=cbb1.text;
idhttp1.Port:=80;
idhttp1.HandleRedirects:=true;
idhttp1.Request.UserAgent :='Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0)';
Data.Add(AnsiToUtf8('user_name='+edt2.text));
data.add(AnsiToUtf8('user_password='+edt1.text));
data.Add(AnsiToUtf8('commit=Зайти'));
idhttp1.Connect;
repeat try
         text:=idhttp1.Post('/visitor/process_login',data);
         a:=true;
       except
         a:=false;
       end;
until a;
При авторизации логина с русским алфавитом никаких проблем не возникает, но при логине с английским начинается зацикливание с одной ошибкой - HTTP/1.1 501 Not Implemented. Как мне исключить эту ошибку???

3) При медленном интернете возникает так называемая "поломка" программы, когда она просто стоит без никаких действий, ничего не делает. Это может быть связано с разъединением программы с сервером(disconnected)???

Заранее всем спасибо.
tolprog вне форума Ответить с цитированием
Старый 30.06.2013, 18:47   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
как можно узнать время выполнения get-запроса в программе, записать значение в переменную???
Код:
var dt:TDateTime;
...
dt:=now;
...get();
...:=now-dt
Цитата:
Это может быть связано с разъединением программы с сервером(disconnected)???
Это можно сказать только зная как она написана. Разьединение обычно генерирует исключение.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 30.06.2013, 20:04   #3
tolprog
Пользователь
 
Регистрация: 29.03.2013
Сообщений: 33
По умолчанию

А как обращаться к переменной типа tdatetime? Мне нужно к примеру сравнить результат с 4секунды.
Цитата:
.Это можно сказать только зная как она написана. Разьединение обычно генерирует исключение.
В моей программе каждый get-запрос обрамлен try-except. Я так понял, что разъединение невозможно в данном случаи? Тогда в чем проблема может быть?
tolprog вне форума Ответить с цитированием
Старый 30.06.2013, 20:13   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
к примеру сравнить результат с 4секунды.
Код:
uses dateutils...
...
if SecondsBetween(now,dat)>4 then Больше 4 сек
Цитата:
Я так понял, что разъединение невозможно в данном случаи?
Че это? Сервак тебе отказал - получай разьединение )
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 30.06.2013, 21:52   #5
tolprog
Пользователь
 
Регистрация: 29.03.2013
Сообщений: 33
По умолчанию

Насчет первого немного не понял, в самоучителе попробую разобраться с типом датавремя. С третим вопросом буду экспериментировать. Спасибо за помощ Stilet. Еще бы разобраться с вторым вопросом...
tolprog вне форума Ответить с цитированием
Старый 30.06.2013, 22:17   #6
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Насчет первого немного не понял
SecondsBetween это функция, которая возвращает кол-во секунд между датами.
Now() функция возвращающая текущую дату-вермя.
Насчет
Цитата:
при логине с английским начинается зацикливание с одной ошибкой - HTTP/1.1 501 Not Implemented.
http://support.microsoft.com/KB/811262
http://www.checkupdown.com/status/E501.html
Цитата:
The Web server (running the Web site) does not understand or does not support the HTTP method
И
Цитата:
501 Not Implemented — сервер не поддерживает возможностей, необходимых для обработки запроса. Типичный ответ для случаев, когда сервер не понимает указанный в запросе метод. Если же метод серверу известен, но он не применим к данному ресурсу, то нужно вернуть ответ 405. Появился в HTTP/1.0.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 01.07.2013, 09:46   #7
Кольша
Далеко не
Участник клуба
 
Аватар для Кольша
 
Регистрация: 11.08.2011
Сообщений: 1,512
По умолчанию

Цитата:
Код:
text:=idhttp1.Post('/visitor/process_login',data);
Щито??
Что это /visitor/process_login ??Надо указывать полный адрес т.е. например http://you-server.com/visitor/process_login .
Кольша вне форума Ответить с цитированием
Старый 01.07.2013, 11:56   #8
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Надо указывать полный адрес
Обрати внимание на
Цитата:
idhttp1.Host:=cbb1.text;
Я вообще-то придерживаюсь твоего мнения, но судя по всему и такое имеет быть место
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 01.07.2013, 12:25   #9
tolprog
Пользователь
 
Регистрация: 29.03.2013
Сообщений: 33
По умолчанию

Пробовал с полным адресом, не помогло. Я по началу, когда только начинал писать программу, писал полный адрес, но это очень трудоемкое дело, утрудняло работу с кодом программы. Заменил одним свойством - host.

Я думал дело в кодировке, все варианты перепробовал, ничего не помогло.

Последний раз редактировалось Stilet; 01.07.2013 в 18:20.
tolprog вне форума Ответить с цитированием
Старый 01.07.2013, 13:13   #10
Кольша
Далеко не
Участник клуба
 
Аватар для Кольша
 
Регистрация: 11.08.2011
Сообщений: 1,512
По умолчанию

Цитата:
но это очень трудоемкое дело, утрудняло работу с кодом программы.
И чем же?
For example:
Код:
var
h:string;
 begin
idhttp1:=TIdHTTP.create(nil);
data:=tstringlist.Create;
idhttp1.Host:=cbb1.text;
idhttp1.Port:=80;
idhttp1.HandleRedirects:=true;
idhttp1.Request.UserAgent :='Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0)';
Data.Add(AnsiToUtf8('user_name='+edt2.text));
data.add(AnsiToUtf8('user_password='+edt1.text));
data.Add(AnsiToUtf8('commit=Зайти'));
idhttp1.Connect;
h:=stringreplace(cbb1.text,'http://','',[rfreplaceall]);
h:=stringreplace(h,'/','',[rfreplaceall]);
repeat try
         text:=idhttp1.Post('http://'+h+'/visitor/process_login',data);
         a:=true;
       except
         a:=false;
       end;
until a;
Кольша вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
2 вопроса Lindemann66 Общие вопросы C/C++ 5 31.08.2011 11:32
2 вопроса W0LF Общие вопросы Delphi 17 19.09.2009 18:34
2 вопроса по ХП Molotok Windows 14 17.12.2008 12:43
2 вопроса по Delphi N!ckeL Помощь студентам 5 30.04.2008 17:12