C# - 获取初始页面的HTTP请求

时间:2015-10-25 01:17:05

标签: c# http get

我必须发送HTTP请求到GET初始页面然后,获取HTTP响应并检查它是否是200响应代码。所有这些都必须保存到.csv文件中,每个网站四次。 这是我得到了多远:

using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace HTTPrequestApp
{
    class Program
    {
        static void Main(string[] args)
        {
            var lstWebSites = new List<string>
            {
                "www.mearstransportation.com",
                "www.amazon.com",
                "www.ebay.com",
                "www.att.com",
                "www.verizon.com",
                "www.sprint.com",
                "www.centurylink.com",
                "www.yahoo.com"
            };
            string filename = @"RequestLog.txt";
            {
                using (var writer = new StreamWriter(filename, true))
                {
                    foreach (string website in lstWebSites)
                    {
                        for (var i = 0; i < 4; i++)
                        {
                            MyWebRequest request = new MyWebRequest();
                            request.Request();
                        }
                    }
                }
            }
        }
    }
}

我仍然需要在我创建的另一个名为MyWebRequest.cs的类中执行GET请求 请帮帮我。

2 个答案:

答案 0 :(得分:2)

在MyWebRequest类中执行以下操作(您还需要将网站url字符串传递给MyWebRequest,但我会明确地将其传递出去):

    HttpWebResponse response = null;

    try
    {
        HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create("http://www.google.com/thisisadeadlink");
        request.Method = "GET";

        response = (HttpWebResponse)request.GetResponse();

        StreamReader sr = new StreamReader(response.GetResponseStream());
        Console.Write(sr.ReadToEnd());
    }
    catch (WebException e)
    {
        if (e.Status == WebExceptionStatus.ProtocolError)
        {
            response = (HttpWebResponse)e.Response;
            Console.Write("Errorcode: {0}", (int)response.StatusCode);
        }
        else
        {
            Console.Write("Error: {0}", e.Status);
        }
    }
    finally
    {
        if (response != null)
        {
            response.Close();
        }
    }

如果服务器失败并且response.StatusCode不是200,则应该捕获。

答案 1 :(得分:2)

由于您的MyWebRequest正在使用HttpWebRequest,如果Request方法的网址为以下参数,则HttpWebResponse方法可以返回public class MyWebRequest { public HttpWebResponse Request(string url) { HttpWebResponse response = null; try { HttpWebRequest httpWebRequest = (HttpWebRequest)WebRequest.Create(url); response = (HttpWebResponse)httpWebRequest.GetResponse(); } catch (WebException ex) { // Handle exception } return response; } }

for

可以在HttpWebResponse response = request.Request("http://" + website); if ((response != null) && (response.StatusCode == HttpStatusCode.OK)) { // Write .csv file } 循环中调用它,如下所示:

DECLARE @Cnt INT 
SELECT @Cnt = COUNT(*) 
FROM Logs_TB 
WHERE Logs_TB.UserName = Users_TB.UserName 

SELECT 
       ID 
      ,UserName
       ,CASE WHEN [Status] = 1 
              THEN 
                    CASE WHEN @Cnt > 0 
                        THEN 'Check' 
                        ELSE 'In DB' 
                    END 
                WHEN [Status] = 2 THEN 'Revision' 
                WHEN [Status] = 3 THEN 'Sent' 
          END AS StatusName 
FROM Users_TB 
CROSS JOIN Logs_TB 
相关问题