从c#和#x27中读取html';不是受支持的编码名称错误
我正在尝试从c#中读取html,如下所示:从c#和#x27中读取html';不是受支持的编码名称错误,c#,html,asp.net-mvc,C#,Html,Asp.net Mvc,我正在尝试从c#中读取html,如下所示: public string getHTMLIcon() { string url = @"http://ddragon.leagueoflegends.com/cdn/7.5.1/img/profileicon/1258.png"; string data = string.Empty; HttpWebRequest request = (HttpWebRequest
public string getHTMLIcon() {
string url = @"http://ddragon.leagueoflegends.com/cdn/7.5.1/img/profileicon/1258.png";
string data = string.Empty;
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
if (response.StatusCode == HttpStatusCode.OK)
{
Stream receiveStream = response.GetResponseStream();
StreamReader readStream = null;
if (response.CharacterSet == null)
{
readStream = new StreamReader(receiveStream);
}
else
{
readStream = new StreamReader(receiveStream, Encoding.GetEncoding(response.CharacterSet));
}
data = readStream.ReadToEnd();
response.Close();
readStream.Close();
}
return data;
}
但正在向我显示下一个错误:“”不是受支持的编码名称
如果我尝试在不使用编码的情况下获取html,我会得到下一个:‰PNG IHDR€L\öœgAMA±…这里是我下载图像的方法:
public static Stream DownloadImage(string url, string referer)
{
try
{
var u = new Uri(url);
HttpWebRequest request;
request = (HttpWebRequest)WebRequest.Create(u);
request.Referer = referer;
request.UserAgent = "userAgent";
var response = (HttpWebResponse)request.GetResponse();
if (response != null)
{
return response.GetResponseStream();
}
}
catch (WebException wex)
{
Logging.Write($"WEB ERROR {url} \n" + wex.Message);
throw;
}
return null;
}
public static void DownloadImage(string url, string referer, string localFilePath)
{
Stream stream = DownloadImage(url, referer);
using(FileStream file = File.Create(localFilePath))
{
stream.CopyTo(file);
}
}
下面是我下载图像的方法:
public static Stream DownloadImage(string url, string referer)
{
try
{
var u = new Uri(url);
HttpWebRequest request;
request = (HttpWebRequest)WebRequest.Create(u);
request.Referer = referer;
request.UserAgent = "userAgent";
var response = (HttpWebResponse)request.GetResponse();
if (response != null)
{
return response.GetResponseStream();
}
}
catch (WebException wex)
{
Logging.Write($"WEB ERROR {url} \n" + wex.Message);
throw;
}
return null;
}
public static void DownloadImage(string url, string referer, string localFilePath)
{
Stream stream = DownloadImage(url, referer);
using(FileStream file = File.Create(localFilePath))
{
stream.CopyTo(file);
}
}
那么编码是必要的吗?如果我不使用,我会得到文本,但只在那个网页上,比如说在谷歌上没有。但是你要求的是PNG图像-文本编码是不相关的。不是在谷歌?我不知道你说的是什么意思。正如@DavidKemp所说,这是一幅图像,编码是不必要的。那么编码是必要的吗?如果我没有使用,我会得到文本,但只在那个网站上,比如在谷歌就没有。但是你要求的是PNG图像-文本编码是不相关的。不是在谷歌?我不知道你说的是什么意思。正如@DavidKemp所说,这是一个图像,编码是不必要的。
Stream.CopyTo
从.Net 4开始就可以使用,它将大大简化代码。是的,这实际上是我以前的.Net 2.0项目中的一段代码。我已经用stream.CopyTo更新了它,所以我删除了最后一个方法。现在真的简单多了;)如果您正在接受代码检查提示,FileStream文件
应该在using语句中,您可以删除file.Close()
调用,然后也可以调用Stream.CopyTo
从.Net 4开始就可以使用,这将大大简化代码。是的,这实际上是我以前的.Net 2.0项目中的代码。我已经用stream.CopyTo更新了它,所以我删除了最后一个方法。现在真的简单多了;)如果您正在接受代码检查提示,FileStream文件
应该在using语句中,您也可以删除file.Close()
调用