System.Net.HttpWebRequest.GetResponse()リモートサーバ
2238 ワード
System.Net.HttpWebRequest.GetResponse()リモートサーバ
https://blog.csdn.net/weixin_33811539/article/details/86015641
WebExceptionサーバステータスコードエラー(500サーバ内部エラーなど)
げんしょう
実装実装要求のページを符号化する場合、要求されたコードは次のコードに似ています.
HttpWebRequest req = (HttpWebRequest)WebRequest.Create(strUrl);
req.UserAgent = "MSIE6.0";
req.Method = "GET";
HttpWebResponse res = (HttpWebResponse)req.GetResponse();
StreamReader sr = new StreamReader(res.GetResponseStream(), strEncode);
strHtml = sr.ReadToEnd();
sr.Close();
res.Close();
しかし、私たちが要求したこのページがちょうど異常が発生したページであるか、存在しないページである場合.上のコードは
req.GetResponse();
ここで例外を放出:リモート・サーバがエラーを返します:(500)内部サーバエラー.
上記のコードでは,エラー発生時のページソースコードは得られない.
原因を分析する
(HttpWebResponse)req.GetResponse(); この行のコードでは、次のことが行われています.
サーバセグメントASP.NetプログラムにExceptionが発生した場合、クライアントアプリケーションがHTTPプロトコルエラーを受け入れた後.このHTTPプロトコルエラーをStatusに変換してWebExceptionStatusに設定する.ProtocolErrorのWebException、そしてこの異常throwを出します.
問題を解決する
エラーが発生したときのサーバセグメントエラーページのソースコードを取得するにはどうすればいいですか?
実は非常に簡単な方法で、エラーが発生するかどうかにかかわらず、次のコードでサーバセグメントページのソースコードを得ることができます.
HttpWebResponse res;
try
{
res = (HttpWebResponse)req.GetResponse();
}
catch (WebException ex)
{
res = (HttpWebResponse)ex.Response;
}
StreamReader sr = new StreamReader(res.GetResponseStream(), strEncode);
strHtml = sr.ReadToEnd();
,WebException StatusCode HTTP , Response WebResponse, HTTP 。
--ファイルがダウンロードできることを発見したが、ダウンロードしたファイルには内容がないことを発見した.
以下に赤い文字を付けます:HttpWebRequest Request=(HttpWebRequest)HttpWebRequest.Create(url);//?act=writePayInfo&payphone="+ num Request.UserAgent = "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022)"; WebResponse Response = Request.GetResponse();
--ファイルをダウンロードし、開くことができます.
参照先:https://blog.csdn.net/atceedsun/article/details/44855799
https://blog.csdn.net/rrzhaobaojun/article/details/25769581