Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.56 MB
Время: 0.014 c
15-1250858767
macrodens
2009-08-21 16:46
2009.10.25
Вопрос по RAID


15-1251387244
uw
2009-08-27 19:34
2009.10.25
Большой XML


15-1250967890
@!!ex
2009-08-22 23:04
2009.10.25
Linux -это всегда OpenSource?


2-1251462711
denis_lunev
2009-08-28 16:31
2009.10.25
Сохранение изменений свойств в EDIT


2-1251312234
sanx
2009-08-26 22:43
2009.10.25
TEdit, как отличить user ввод от присвоения Text нового значения?




   Наверх