下面的 c# 代码不是从给定的 url 读取网站或网页

Posted

技术标签:

【中文标题】下面的 c# 代码不是从给定的 url 读取网站或网页【英文标题】:Below c# code is not reading websites or webpage from given urls 【发布时间】:2017-11-29 03:53:01 【问题描述】:
        WebRequest request = WebRequest.Create(url);
        WebRequest.DefaultWebProxy = null;

        request.Proxy = null;
        WebResponse response = request.GetResponse();
        Stream data = response.GetResponseStream();
        using (StreamReader sr = new StreamReader(data))
        
            html = sr.ReadToEnd();
        

以上代码无法读取/下载以下网页: 1)https://en.wikipedia.org/wiki/Unified_Payments_Interface 2)http://www.npci.org.in/UPI_Background.aspx

【问题讨论】:

那么它有什么作用呢?它以什么方式没有得到它,当它“没有”时,响应变量包含什么 如果我知道,以什么方式没有得到它,那我为什么要问。 嗯,你应该可以在getresponse之后去debug,看看response变量... 【参考方案1】:

这可以帮助您以下代码包含获取和发布数据:

public static string PostContent(this Uri url, string body, string contentType = null)
    
        var request = WebRequest.Create(url);
        request.Method = "POST";

        if (!string.IsNullOrEmpty(contentType)) request.ContentType = contentType;

        using (var requestStream = request.GetRequestStream())
        
            if (!string.IsNullOrEmpty(body)) using (var writer = new StreamWriter(requestStream))  writer.Write(body); 

            using (var response = request.GetResponse() as HttpWebResponse)
            
                using (var stream = response.GetResponseStream())
                using (var reader = new StreamReader(stream))
                
                    return reader.ReadToEnd();
                
            
        
    

    public static string GetContent(this Uri url)
    
        WebClient client = new WebClient();
        try
        
            using (client)
            
                client.Encoding = Encoding.UTF8;

                return client.DownloadString(url);
            
        
        catch (WebException)
        
            return "";
        
        finally
        
            client.Dispose();
            client = null;
        
    

【讨论】:

【参考方案2】:

请注意.aspx 文件扩展名设计服务器端页面,因此您将只能下载在这些网站上导航时显示的html 页面(.php 文件也是如此)。

但如果你想下载前端视图,这应该可以:

using System.Net;
...
WebClient client = new WebClient();
client.DownloadFile("Your url","download location");

【讨论】:

以上是关于下面的 c# 代码不是从给定的 url 读取网站或网页的主要内容,如果未能解决你的问题,请参考以下文章

一种计算重定向 URL 的方法

C# 从 UTF-8 流中读取字符串的正确方法

如何在 C# 操作中读取 OData URL 参数值?

如何在flutter中从url读取网站内容[关闭]

如何在 C# 中检查给定的 URL 是 HTTP 还是 HTTPS

如何从c#中的url获取子字符串或字符串的一部分