方法:
public RequestTest Test(string url)
{
var test = new RequestTest() { Url = url };
var sw = new Stopwatch();
var request = WebRequest.CreateHttp(test.Url);
request.AllowAutoRedirect = true;
request.Method = "HEAD";
request.UserAgent = "Accept-Language: en-US,en;q=0.5";
try
{
sw.Start();
using (var response = (HttpWebResponse)request.GetResponse())
{
sw.Stop();
test.Time = (int)sw.ElapsedMilliseconds;
test.StatusCode = response.StatusCode;
}
return test;
}
catch (WebException ex)
{
test.StatusCode = ((HttpWebResponse)ex.Response).StatusCode;
return test;
}
}
网址为http://monosnap.com/page/faq,必须重定向到某个语言区域,例如 - http://monosnap.com/ru/page/faq
但它会抛出WebException,使用Message"无法解析远程名称:' page'"。
UPD:我添加了useragent
request.UserAgent = "Accept-Language: en-US,en;q=0.5";
但我仍然得到相同的例外情况"无法解析远程名称:' page'" 此外,重定向可以从我的浏览器正常工作。所以,问题在于代码。
答案 0 :(得分:4)
对于您尝试访问的网站,只需添加“Accept-Language”标头即可:
using System;
using System.Diagnostics;
using System.Net;
namespace ConsoleApplication1
{
class Program
{
public class RequestTest
{
public string Url { get; set; }
public int Time { get; set; }
public HttpStatusCode StatusCode { get; set; }
}
public static RequestTest Test(string url)
{
var test = new RequestTest() { Url = url };
var sw = new Stopwatch();
var request = WebRequest.CreateHttp(test.Url);
request.AllowAutoRedirect = true;
request.Method = "HEAD";
request.Headers.Add("Accept-Language: ru-RU, en; q = 0.5");
try
{
sw.Start();
using (var response = (HttpWebResponse)request.GetResponse())
{
sw.Stop();
test.Time = (int)sw.ElapsedMilliseconds;
test.StatusCode = response.StatusCode;
}
return test;
}
catch (WebException ex)
{
test.StatusCode = ((HttpWebResponse)ex.Response).StatusCode;
return test;
}
}
static void Main(string[] args)
{
var x = Test("http://monosnap.com/page/faq");
Console.WriteLine(x.StatusCode + " " + x.Time.ToString());
Console.ReadLine();
}
}
}
示例输出:
确定186
如果无法确定语言,则重定向器似乎没有默认设置。
有关设置接受语言的更多信息:Setting language preferences in a browser。