Я видел много примеров в Интернете, но я не могу понять, почему мой код не работает.Delphi indy получить содержимое страницы
У меня есть URL, который выглядит следующим образом:
http://www.domain.com/confirm.php?user=USERNAME&id=THEID
confirm.php
это страница, которая делает некоторые проверки в базе данных MySQL, а затем только вывод страницы является 0 или -1 (истина или ложь):
<?php
//long code...
if (...) {
echo "0"; // success!
die();
} else {
echo "-1"; // fail!
die();
}
?>
Моего Delphi FireMonkey приложение должно открыть URL выше, передавая имя пользователя и идентификатор, а затем прочитать результат страницы. Результат - только -1 или 0. Это код.
//I have created a subclass of TThread
procedure TRegister.Execute;
var
conn: TIdHTTP;
res: string;
begin
inherited;
Queue(nil,
procedure
begin
ProgressLabel.Text := 'Connecting...';
end
);
//get the result -1 or 0
try
conn := TIdHTTP.Create(nil);
try
res := conn.Get('http://www.domain.com/confirm.php?user='+FUsername+'&id='+FPId);
finally
conn.Free;
end;
except
res := 'error!!';
end;
Queue(nil,
procedure
begin
ProgressLabel.Text := res;
end
);
end;
Значение res
всегда error!!
и никогда -1 или 0. Где мой код не так? Ошибка выудить из on E: Exception do
является:
HTTP/1.1 406 не приемлемо
Ну появляется 'ошибка !!' только происходит, когда возбуждается исключение. Вы должны прочитать исключение и сообщить нам точное исключение, которое действительно поднимает. В противном случае все, что мы можем сделать, это догадываться, и есть миллионы возможных догадок, которые мы могли бы сделать. –
Таким образом, ваш исключающий блок должен быть больше похож на 'кроме E: Exception do begin res: = 'EXCEPTION:' + E.Messages; конец; end; 'Пожалуйста, сделайте это, а затем отредактируйте свой вопрос, чтобы предоставить точное исключение, которое возникает. –
Также, если вы находитесь под ARC, нет необходимости снимать объект –