c# - 无法使用c#获取网站内容

标签 c# httpwebrequest

这是我获取网站内容的代码行:

private string GetContent(string url) {
    var request = (HttpWebRequest)WebRequest.Create(url);
    request.Method = "GET";
    var content = String.Empty;
    HttpStatusCode statusCode;
    using (var response = request.GetResponse())
        using (var stream = response.GetResponseStream())
        {
            var contentType = response.ContentType;
            Encoding encoding = null;
            if (contentType != null)
            {
                var match = Regex.Match(contentType, @"(?<=charset\=).*");
                if (match.Success)
                    encoding = Encoding.GetEncoding(match.ToString());
            }

            encoding = encoding ?? Encoding.UTF8;

            statusCode = ((HttpWebResponse)response).StatusCode;
            using (var reader = new StreamReader(stream, encoding))
                content = reader.ReadToEnd();
        }
    return content;
}

我尝试使用链接运行这行代码:http://google.com 。一切都完成了。但是当我使用链接运行时:http://batdongsan.com.vn/ 。它不起作用并显示“抱歉!出了点问题。”。我不知道为什么会发生这样的事。我如何获取第二个链接的内容?

最佳答案

看起来该站点正在检查 User-Agent header ,并且由于默认情况下未设置它,因此它返回错误消息。我添加了浏览器发送的内容,并且能够获取该链接的内容。只需添加设置 UserAgent 的行,如下所示:

// ...
var request = (HttpWebRequest)WebRequest.Create(url);
request.Method = "GET";
request.UserAgent = "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.106 Safari/537.36";

var content = String.Empty;
HttpStatusCode statusCode;
// ...

关于c# - 无法使用c#获取网站内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34652376/

相关文章:

c# - Web Api 在发生异常时总是返回 http 状态码 200

c# - WCF:回调不是异步的

c# - '检测到没有 [Pure] 的方法调用'......但是 Pure 在那里

android - 如何在 webView 的 url 中发送 referer 请求

c# - 在浏览器中托管 Word - AutomationElement IsWindowPatternAvailable - 如何设置?

c# - 从 C# 读取 Access 2007 (accdb) 文件的性能真的很慢

c# - 在C#中启动WebRequest时出现SocketException

c# - Dispatcher、BackgroundWorker 还是 Parallel?

php - XMLRPC Zend_Http_Client_Adapter_Exception' 带有消息 '10 秒后读取超时

Java:如何创建 HTTP 浏览 session