私は2つの方法で行った例外をキャッチしています。最初の方法では、完全な例外をキャッチし、内部例外が WebException タイプであるかどうかを確認し、そうである場合は応答ストリームを取得します。以下は最初の例ですが、常にゼロ文字列の応答が返されます。
catch (Exception e)
{
if (e.InnerException is WebException)
{
WebException webEx = (WebException)e.InnerException;
HttpWebResponse myResponse = webEx.Response as HttpWebResponse;
string response = string.Empty;
if (myResponse != null)
{
StreamReader strm = new StreamReader(myResponse.GetResponseStream(), Encoding.UTF8);
response = strm.ReadToEnd();
//EMPTY RESPONSE
}
}
}
ただし、Web 例外をキャッチし、ほぼ同じことを行うと、応答が正常に取得されます。
catch (WebException e)
{
HttpWebResponse myResponse = e.Response as HttpWebResponse;
string response = string.Empty;
if (myResponse != null)
{
StreamReader strm = new StreamReader(myResponse.GetResponseStream(), Encoding.UTF8);
response = strm.ReadToEnd();
//POPULATED RESPONSE
}
}
2番目の例では応答を解析できるが、最初の例では解析できない理由はありますか?