2012-05-22 32 views
-2

这是我通过“HttpWebRequest”和“HttpWebResponse”从浏览器获取URL的代码。为什么WebHttpRequest.ResponseUri不在C#中返回正确的URL

{ 
    string link="http://g.microsoftonline.com/0BXPS00id-id/1250"; 

    HttpWebRequest request = (HttpWebRequest)WebRequest.Create(link); 

    HttpWebResponse response = (HttpWebResponse)request.GetResponse(); 

    string responseurl = response.ResponseUri.ToString(); 

    Console.WriteLine(responseurl); 
} 

当我执行上述代码的URL返回是

“https://mocp.microsoftonline.com/Site/Error.aspx?Err=NotSupported”

但是当我手动打开浏览器重定向链接

“https://mocp.microsoftonline.com/Site/Support.aspx”

为什么response.ResponseUri.ToString()返回错误的url?

您能否为此提供解决方案?

+3

慷慨地吸引了UserAgent的上述值。只需在浏览器中打开https://mocp.microsoftonline.com/Site/Error.aspx?Err=NotSupported,就会看到。 –

+0

感谢,不仅此链接,但也有一些其他链接,从HttpWebresponse的网址返回不同于当我们手动打开浏览器中的链接 – arun

回答

0

通过request.UserAgent属性,您可以充当支持的浏览器。 以下为我工作

string link = "http://g.microsoftonline.com/0BXPS00id-id/1250"; 
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(link); 
request.UserAgent = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)"; 
HttpWebResponse response = (HttpWebResponse)request.GetResponse(); 

string responseurl = response.ResponseUri.ToString(); 
Console.WriteLine(responseurl) 

我不是在UserAgent的价值的专家。我慷慨地从https://stackoverflow.com/a/702110/455904

+0

谢谢,它的工作对于该链接,但我有一个与其他链接的问题,即使通过使用“ request.UserAgent”。 如果我使用上面的代码的链接 [链接]“http://g.microsoftonline.com/0BXPS00id-id/1222” 它返回 “http://exchangeonline.pinpoint.microsoft.com /en-US/SelectCulture.aspx“ 但是当我手动打开浏览器中的链接时,它显示如下 ”http://exchangeonline.pinpoint.microsoft.com/en-US/services/search/data-management -and-migration-b200025?WT.mc_id = ww_Perm_Deeplink_Office365__o365dl“ – arun

+0

我在第一个链接上得到301结果,这意味着它已被移动。重定向它后,可能会根据您的浏览器当前Cookie做出一些选择。您可以使用IE开发人员工具(F12)跟踪这些调用。之后,试着找出哪些cookie似乎做了这个技巧,并填写request.CookieContainer与这些。 –

+0

我不擅长捕捉饼干,所以你可以根据你的浏览器为我提供代码,那么我会更好地了解这一点。 – arun

相关问题