我必须发送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请求 请帮帮我。
答案 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