11

HTMLページを取得して文字列として返すこの単純な関数があります。リクエストが成功した場合にのみ HTML 文字列のみを返しBadRequest、404 またはその他のエラー ステータス コードの場合のようなものを返すにはどうすればよいですか?

public static string GetPageHTML(string link)
{
    using (WebClient client= new WebClient())
    {
        return client.DownloadString(link);
    }
}
4

1 に答える 1

24

WebException をキャッチできます。

public static string GetPageHTML(string link)
{
    try
    {
        using (WebClient client = new WebClient())
        {
            return client.DownloadString(link);
        }
    }
    catch (WebException ex)
    {
        var statusCode = ((HttpWebResponse)ex.Response).StatusCode;
        return "An error occurred, status code: " + statusCode;
    }
}

もちろん、関数自体に try/catch を配置する代わりに、呼び出しコードでこの例外をキャッチし、html を解析しようとさえしない方が適切です。

于 2013-03-08T08:15:16.203 に答える