以下のコードをAndroid Appとして実行しました。 lHttpは、私が作ったWebServiceに要求を送ります。ここでIP(URL)とPortはユーザーによって定義されています。ただし、WebサービスがそのURLでアクティブでない場合、Appはクラッシュします。デバッグ中に、例外をキャッチしようとすると次のエラーが表示されます。IdHTTP例外の原因セグメンテーションフォールト
例外クラスEIdHTTPProtocolExceptionが発生し、 'HTTP/1.1 500内部サーバーエラー'というメッセージが表示されます。
発生例外クラスセグメンテーションフォルト(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);
5人の例外ハンドラのうち、実際に例外をキャッチしているのはどれですか?サーバー側のMyWebService.dllにエラーがあり、HTTP応答によってクライアントアプリケーションにエラーメッセージが転送される可能性があります。 – mjn
'HTTP/1.1 500内部サーバーエラー 'は、サーバーに間違った要求を送信していることを意味します。それは単にサーバー側の問題です。 – Machado