var str= "http://img2.cits-sh.com/fujian/"+ System.Web.HttpUtility.UrlEncode("福建-厦门-音乐广场8834.jpg");
Console.WriteLine(str);
HttpWebResponse response = null;
try
{
System.Net.ServicePointManager.DefaultConnectionLimit = 512;
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(str);
response = (HttpWebResponse)request.GetResponse();
Console.Write(response.StatusCode);
}
catch (Exception ex)
{
throw ex;
}
finally
{
if (null != response)
response.Close();
}
如上所示,这个url编码后在浏览器可以打开,但是http请求返回404。不知道有没有有遇到过这个问题的兄弟。
加上 UserAgent 试试
您好,刚看到,谢谢您。我加上了和浏览器一样的UserAgent
request.UserAgent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36";
但是请求还是返回404错误。
@自由的鱼: 知道了,问题出在 System.Web.HttpUtility.UrlEncode("福建-厦门-音乐广场8834.jpg")
,不应该使用 UrlEncode
@dudu: 您好,
1是不是直接这样:
var str= "http://img2.cits-sh.com/fujian/福建-厦门-音乐广场8834.jpg";
我刚这样测试也是返回404,
2.然后这样:
var str= "http://img2.cits-sh.com/fujian/福建-厦门-音乐广场8834.jpg";
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(str);
request.UserAgent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36";
也是返回404
是不是我哪里不对,其他的链接没有问题,就这种编码和不编码都有问题,我这里。
这种 var str = "http://img2.cits-sh.com/fujian/福建-厦门-音乐广场%e2%80%8e8834.jpg";
能够正常打开,也不行。就是浏览器复制过来
@自由的鱼: 我刚刚用你的代码测试了,不管加不加UrlEncode
都返回 200
,建议换个网络环境试试
@dudu:
您好,不好意思,再打搅下,dudu大神,我想问下,您那边测试的时候的.NET Framework版本。我这里是4.6
因为我昨天在家测试也是404.
我发现4.0的版本可以,之后的不行
@自由的鱼: 我用的是 .NET Framework 4.5
@dudu: 奇怪了。我4.5家里的网络也返回404。
@自由的鱼: 建议使用 Wireshark 进行 tcp 抓包看一下
@dudu: 好的,谢谢。我正在搞。