我正在尝试验证网站是否已启动。我正在使用TcpClient来调用网站,它工作正常,但当我使用webrequest为同一个网站时,它会抛出404错误。
TcpClient和webRequest的功能有什么区别?
var client = new TcpClient();
client.Connect("android.clients.google.com", 80);
var request = WebRequest.Create("http://android.clients.google.com");
var resp = request.GetResponse();
答案 0 :(得分:4)
TcpClient和webRequest的功能有什么区别?
TcpClient
是TCP客户端套接字的包装器,允许您与任何TCP服务器通信。用于与该服务器通信的application protocol将由您的代码实现。您的代码仅连接到HTTP服务器,但不与其通信。
HttpWebRequest
不仅处理TCP层,还处理HTTP layer。这使您可以对任何HTTP服务器执行Web请求。您的代码会向GET
执行http://android.clients.google.com
个请求,doesn't exist,因此您收到的404
。
解决原始问题:Web服务器响应给定端口上的套接字连接甚至返回HTTP响应这一事实可能意味着或者可能不意味着该网站被视为“up”,因此获得200响应。接收Twitter's "failwhale"是否表示网站“正常”?根据您实际尝试的操作,可能需要采用不同的方法。有时最好发出你想要的请求,而不是事先“ping”网站。
答案 1 :(得分:0)
404错误测量Web服务器在线但没有这样的文件。 Web服务器返回错误,而不是客户端。换句话说,测试没问题。使用真正离线的Web服务器检查状态 - 您必须获得连接超时,端口关闭或类似。无论如何,为此目的,最好使用TcpClient。