none
winfrom HttpStatusCode 如何用? RRS feed

  • 问题

  • HttpStatusCode? 如何用?求教!~

    string strURL1 = "http://www.163.com";
    
    string strURL2 = "http://www.193.com";

    winfrom 如何获取页面的  返回状态码?  ok(200) 或者是NotFound(404)



    • 已编辑 ylzl 2016年9月2日 14:37
    2016年9月2日 14:32

答案

  • try

    {

    HttpWebRequest httpReq = (HttpWebRequest)WebRequest.Create(strURL2);

                httpReq
    .AllowAutoRedirect = false;

               
    HttpStatusCode httpRes = ((HttpWebResponse)httpReq.GetResponse()).StatusCode;

    }

    catch(Exception exception)

    {

    }


    专注于.NET ERP/CRM开发框架,C/S架构,SQL Server + ORM(LLBL Gen Pro) + Infragistics WinForms


    • 已编辑 Shuanghua Li 2016年9月3日 2:05
    • 已标记为答案 ylzl 2016年9月3日 12:12
    2016年9月3日 2:05
  • 用 try ... catch 去包吧!

    https://msdn.microsoft.com/zh-cn/library/system.net.webexception.status(v=vs.110).aspx

    msdn上的example,

    try {
       // Create a web request for an invalid site. Substitute the "invalid site" strong in the Create call with a invalid name.
         HttpWebRequest myHttpWebRequest = (HttpWebRequest) WebRequest.Create("invalid site");
    
        // Get the associated response for the above request.
         HttpWebResponse myHttpWebResponse = (HttpWebResponse) myHttpWebRequest.GetResponse();
        myHttpWebResponse.Close();
    }
    catch(WebException e) {
        Console.WriteLine("This program is expected to throw WebException on successful run."+
                            "\n\nException Message :" + e.Message);
        if(e.Status == WebExceptionStatus.ProtocolError) {
            Console.WriteLine("Status Code : {0}", ((HttpWebResponse)e.Response).StatusCode);
            Console.WriteLine("Status Description : {0}", ((HttpWebResponse)e.Response).StatusDescription);
        }
    }
    catch(Exception e) {
        Console.WriteLine(e.Message);
    }


    亂馬客blog: http://www.dotblogs.com.tw/rainmaker/


    2016年9月3日 2:11

全部回复

  • HttpWebRequest httpReq = (HttpWebRequest)WebRequest.Create(strURL2);
    
                httpReq.AllowAutoRedirect = false;
    
                HttpStatusCode httpRes = ((HttpWebResponse)httpReq.GetResponse()).StatusCode;

    (HttpWebResponse)httpReq.GetResponse()    网址打不开就会报错
    • 已编辑 ylzl 2016年9月2日 15:21
    2016年9月2日 15:20
  • ylzl是正解,补充一下HTTP协议状态码详解(HTTP Status Code)

    http://www.cnblogs.com/shanyou/archive/2012/05/06/2486134.html


    专注于.NET ERP/CRM开发框架,C/S架构,SQL Server + ORM(LLBL Gen Pro) + Infragistics WinForms

    2016年9月3日 0:02
  • 不好意思 2楼是我自己追加的问题 现在想解决这个网址打不开就会报错的问题 

    (HttpWebResponse)httpReq.GetResponse()    网址打不开就会报错

    有没有其他办法或者 跳过那一步?

    主要是想判断是不是可以访问 是不是正常的网址  页面返回状态如何


    • 已编辑 ylzl 2016年9月3日 2:04
    2016年9月3日 2:02
  • try

    {

    HttpWebRequest httpReq = (HttpWebRequest)WebRequest.Create(strURL2);

                httpReq
    .AllowAutoRedirect = false;

               
    HttpStatusCode httpRes = ((HttpWebResponse)httpReq.GetResponse()).StatusCode;

    }

    catch(Exception exception)

    {

    }


    专注于.NET ERP/CRM开发框架,C/S架构,SQL Server + ORM(LLBL Gen Pro) + Infragistics WinForms


    • 已编辑 Shuanghua Li 2016年9月3日 2:05
    • 已标记为答案 ylzl 2016年9月3日 12:12
    2016年9月3日 2:05
  • 用 try ... catch 去包吧!

    https://msdn.microsoft.com/zh-cn/library/system.net.webexception.status(v=vs.110).aspx

    msdn上的example,

    try {
       // Create a web request for an invalid site. Substitute the "invalid site" strong in the Create call with a invalid name.
         HttpWebRequest myHttpWebRequest = (HttpWebRequest) WebRequest.Create("invalid site");
    
        // Get the associated response for the above request.
         HttpWebResponse myHttpWebResponse = (HttpWebResponse) myHttpWebRequest.GetResponse();
        myHttpWebResponse.Close();
    }
    catch(WebException e) {
        Console.WriteLine("This program is expected to throw WebException on successful run."+
                            "\n\nException Message :" + e.Message);
        if(e.Status == WebExceptionStatus.ProtocolError) {
            Console.WriteLine("Status Code : {0}", ((HttpWebResponse)e.Response).StatusCode);
            Console.WriteLine("Status Description : {0}", ((HttpWebResponse)e.Response).StatusDescription);
        }
    }
    catch(Exception e) {
        Console.WriteLine(e.Message);
    }


    亂馬客blog: http://www.dotblogs.com.tw/rainmaker/


    2016年9月3日 2:11
  • 楼主:用catch的时候可以尝试使用WebException,因为可以通过该异常的事例获取Status。

    ASP.NET Forum
    StackOverFlow
    FreeRice Donate
    Issues to report
    Free Tech Books Search and Download

    2016年9月3日 6:57
    版主