Я запустил код ниже в качестве приложения для Android. LHttp отправляет запрос на WebService, который я создал, где IP (URL) и Порт определяются пользователем. Однако, если веб-служба не активна в этом URL-адресе, приложение разбилось. Во время отладки он дает мне следующие ошибки, пытаясь поймать исключение.Исключение IdHTTP вызывает ошибку сегментации
класс исключенных исключений EIdHTTPProtocolException с сообщением 'HTTP/1.1 500 Internal Server Error'.
класс исключения исключений Сегментация неисправности (11).
класс исключений класса EAccessViolation с сообщением «Нарушение прав доступа по адресу B6FBD7CE, доступ к адресу 000000A8».
Кто-нибудь знает, как поймать это исключение, не разбивая приложение?
Path:= 'http://'+ Conf.IP + ':' + Conf.Port +'/services/MyWebService.dll/GetQuestions';
lHTTP:= TIdHTTP.Create(nil);
Stream:= TStringStream.Create;
Stream.WriteString(Requisition);
try
Result := lHTTP.Post(Path, Stream);
except
on E:EIdException do
Result:= E.Message;
on E:EIdSocketError do
Result:= E.Message;
on E:EIdConnClosedGracefully do
Result:= E.Message;
on E:EIdHTTPProtocolException do
Result:= E.Message;
on E:Exception do
Result:= E.Message;
end;
Stream.Free;
FreeAndNil(lHTTP);
Какое из пяти обработчиков исключений действительно выдает исключение? Возможно, на стороне сервера MyWebService.dll произошла ошибка, и ответ HTTP только переносит сообщение об ошибке в ваше клиентское приложение, – mjn
'HTTP/1.1 500 Internal Server Error' означает, что вы отправляете неверный запрос на сервер или это просто проблема на стороне сервера. – Machado