Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2009.10.25;
Скачать: CL | DM;

Вниз

idhttp1.Get зависает   Найти похожие ветки 

 
Student85236   (2009-08-27 12:02) [0]

пытаюсь перегрузить роутер использую indy
но программа зависает на отправке get запроса как исправить?
begin
idhttp1.Request.BasicAuthentication :=true;
idhttp1.Request.Username:="admin";
idhttp1.Request.Password:="admin";
idhttp1.Get("http://10.39.1.33/cgi-bin/reset.cgi")  ;
idhttp1.Free;
end;


 
Сергей М. ©   (2009-08-27 12:07) [1]


> пытаюсь перегрузить роутер использую indy


А что, роутер этот не поддерживает snmp-управление, в частности snmp-ребут ?
Только веб-интерфейс и без вариантов ?


 
Student85236   (2009-08-27 12:09) [2]

Только веб-интерфейс


 
Сергей М. ©   (2009-08-27 12:13) [3]

А что за дивайс ?


 
Student85236   (2009-08-27 12:15) [4]

Axesstel MV420


 
Сергей М. ©   (2009-08-27 12:17) [5]

И перезагружать ты его пытаешься, видимо, удаленно, т.е. роутер и твой http-клиент находятся в разных подсетях, так ?


 
Student85236   (2009-08-27 12:20) [6]

да команда проходит только зависает в режиме отладки на get запросе как бы это обнулить?


 
Сергей М. ©   (2009-08-27 12:24) [7]


> только зависает в режиме отладки на get запросе


А если запускать не из-под отладчика, то что возвращает Get() ?


 
Student85236   (2009-08-27 12:27) [8]

как это проверить подскажите пожалуйста


 
Медвежонок Пятачок ©   (2009-08-27 12:28) [9]

убрать idhttp и взять idtcpclient
послать гет, ответ не читать


 
Сергей М. ©   (2009-08-27 12:28) [10]

Не понял, чего проверить ?


 
Медвежонок Пятачок ©   (2009-08-27 12:29) [11]

либо посмотреть, может там роутер редиректом отвечает, а у тебя он не включен


 
Student85236   (2009-08-27 12:30) [12]

ответ какой функцией прочитать?


 
Медвежонок Пятачок ©   (2009-08-27 12:31) [13]

а ты вообще уверен, что ответ есть?


 
Student85236   (2009-08-27 12:33) [14]

да я забыл там идёт редирект


 
Student85236   (2009-08-27 12:35) [15]

хорошо а как тогда на IdTCPClient сделать авторизацию?


 
Сергей М. ©   (2009-08-27 12:35) [16]


> может там роутер редиректом отвечает


Скорее всего именно так и отвечает - редиректом на, скажем, http://10.39.1.33/start.htm.

Др.вопрос, что http-клиент, если ему разрешено, тут же ринется по редиректу, а хост роутера и его веб-сервер поднимутся далеко не сразу, тем паче если роутер ходит во внешние сети (откуда автор , полагаю, пытается ребутить свой дивайс) через PPP


 
Медвежонок Пятачок ©   (2009-08-27 12:36) [17]

И что у нас в HandleRedirect?


 
Student85236   (2009-08-27 12:38) [18]

как посмотреть ? HandleRedirect


 
Сергей М. ©   (2009-08-27 12:39) [19]


> как тогда на IdTCPClient сделать авторизацию?
>


Точно так же как ее делает IdHTTP, только придется это делать ручками.
А зачем тебе авторизация ? Ты же уже авторизовался средствами IdHTTP, осталось только исхитриться послать средствами этого же компонента запрос без ожидания ответа


 
Student85236   (2009-08-27 12:40) [20]

а как не ждать ответ? он мне в принципе не нужен


 
Медвежонок Пятачок ©   (2009-08-27 12:41) [21]

ты чего такой трудный-то?


 
Медвежонок Пятачок ©   (2009-08-27 12:45) [22]

http://img198.imageshack.us/img198/5687/redirectalb.jpg

а как не ждать ответ?
убрать idhttp и взять idtcpclient
послать гет, ответ не читать


 
Student85236   (2009-08-27 12:49) [23]

у меня стоит false


 
Anatoly Podgoretsky ©   (2009-08-27 12:53) [24]

Какой ответ, когда роутер прекращает существование, тут нужно переподключение к рутеру. И программа видимо не зависает, а ожидает таймаута.


 
Медвежонок Пятачок ©   (2009-08-27 12:54) [25]

у меня стоит false

И теперь ты молодец?


 
Student85236   (2009-08-27 13:21) [26]

)


 
Сергей М. ©   (2009-08-27 13:27) [27]


> Student85236


Перед вызовом Get() для отправки запроса на ребут подмени на время объект IdHttp.IOHandler на своего наследника TIdIOHandler с перекрытым методом ReadLn, в котором возвращай пустую строку.


 
Student85236   (2009-08-27 14:25) [28]

Спасибо большое но как я незнаю если бы написали )


 
Сергей М. ©   (2009-08-27 14:27) [29]

Что не понятно ?


 
Student85236   (2009-08-27 14:54) [30]

пытаюсь сделать на ics

begin

 httpcli1.URL:="http://10.39.1.33/cgi-bin/reset.cgi";
 httpcli1.Password:="admin";
 httpcli1.Username:="admin";
try
httpcli1.Get;
except
Exit;
end;
if (HttpCli1.StatusCode) = 200 Then
    writeln("ok") else
    writeln("Error "+IntToStr(HttpCli1.StatusCode));

end;


 
Сергей М. ©   (2009-08-27 14:56) [31]

И ?


 
Student85236   (2009-08-27 14:58) [32]

всё равно весит там скорее всего идёт редирект мне не нужен ответ от сервера как это избежать? или получил там ответ 302 и всё


 
Медвежонок Пятачок ©   (2009-08-27 15:00) [33]

Интересно, когда же он догадается включить HandleRedirects?


 
Student85236   (2009-08-27 15:02) [34]

в ics ?


 
Медвежонок Пятачок ©   (2009-08-27 15:06) [35]

да пофик где


 
Сергей М. ©   (2009-08-27 15:08) [36]


> Student85236


И долго ты еще будешь метаться по разным компонентам, в надежде что авось оно само как-нибудь волшебным образом заработает ?


 
Student85236   (2009-08-27 15:09) [37]

как ! я не знаю где это подскажи!!!!!


 
Student85236   (2009-08-27 15:12) [38]

)


 
Сергей М. ©   (2009-08-27 15:15) [39]

HandleRedirects - это опубликованное свойство TIdHTTP, это в Инспекторе Объектов видно.
Ты вообще туда заглядывал, в Инспектор Объектов ??


 
Student85236   (2009-08-27 15:15) [40]

HandleRedirects := true;


 
Сергей М. ©   (2009-08-27 15:17) [41]

А на вопрос в [5] ответить таки сподобишься ?


 
Student85236   (2009-08-27 15:18) [42]

да


 
Сергей М. ©   (2009-08-27 15:20) [43]

Мда .. Что-то ты действительно трудный)


 
Student85236   (2009-08-27 15:50) [44]

idhttp1.Request.BasicAuthentication :=true;
idhttp1.Request.Username:="admin";
idhttp1.Request.Password:="admin";
idhttp1.HandleRedirects:=true;
idhttp1.Get("http://10.39.1.33/cgi-bin/reset.cgi")  ;
idhttp1.Free;


 
Сергей М. ©   (2009-08-27 15:54) [45]

Соизволь ответить на [41] ..


 
Student85236   (2009-08-27 16:03) [46]


> И перезагружать ты его пытаешься, видимо, удаленно, т.е.
>  роутер и твой http-клиент находятся в разных подсетях,
> так ?


да они находяться в разных подсетях


 
Сергей М. ©   (2009-08-27 16:10) [47]

Ну тады обработка редиректа тебя вряд ли спасет.
Действуй по схеме [27]


 
Student85236   (2009-08-27 16:28) [48]

примерчик бы )


 
Медвежонок Пятачок ©   (2009-08-27 16:33) [49]

таймаут для idHTTP секунды в три и обернуть все в try/except


 
Сергей М. ©   (2009-08-27 16:33) [50]

Что не понятно ?


 
Сергей М. ©   (2009-08-27 16:40) [51]


> Медвежонок Пятачок ©   (27.08.09 16:33) [49]


Лучше не заморачиваться с таймаутом.
Тем более если следом за ребутом нужен повторный веб-запрос к роутеру.
Неизвестно когда тот поднимет интерфейс и веб-сервис, особенно в случае когда он лезет к провайдеру через PPP



Страницы: 1 2 вся ветка

Текущий архив: 2009.10.25;
Скачать: CL | DM;

Наверх




Память: 0.58 MB
Время: 0.027 c
2-1251782328
Sw
2009-09-01 09:18
2009.10.25
проверка готовности диска А и копирование на дискету


2-1251793732
kostyl_kostyl
2009-09-01 12:28
2009.10.25
Передача данных в функцию


1-1221645579
Int23
2008-09-17 13:59
2009.10.25
Можно ли перенести компонент из Д7 в Д2006


15-1250592835
abun
2009-08-18 14:53
2009.10.25
Backdoor.Hupigon.bnln и Heuristic.BehavesLike.Win32.O - что это??


15-1250530727
Юрий Зотов
2009-08-17 21:38
2009.10.25
Супер-пупер-мега-сплэш