2017-02-22 70 views
0

代码一个HTTPRequest,重定向异常低于在UWP项目

public static async Task<string> getForwardUrl(string url) 
{ 
    try 
    { 
     HttpClient client = new HttpClient(); 
     HttpRequestMessage forwardRequest = new HttpRequestMessage(); 

     forwardRequest.RequestUri = new Uri(url); 
     HttpResponseMessage Message = await client.SendAsync(forwardRequest); 
     return Message.RequestMessage.RequestUri.OriginalString; 
    } 
    catch (Exception ex) 
    { 
     WriteLine(ex.Message); 
    } 
    //... 
} 

当我在一个uwp项目运行它,会出现异常。此异常的消息显示重定向请求会将安全连接更改为不安全连接(之后,我检查了登录页面的URL,它是https,但登录后的页面是http)。

我找到一个类似的问题,他建议使用Windows.Web.Http而不是System.Net.Http但我得到相同的错误信息。

感谢您的回复

编辑: 网址为:https://tinyurl.com/57muy(删除空格)或短HTTP URL与tinyurl.com!这个问题只发生在短裤http一边! 错误:发送请求时发生错误。内部消息:找不到此错误的错误消息

+1

我与URL'tinyurl.com/KindleWireless'你所提到的测试,但一切正常在我的身边。当我在代码中使用'System.Net.Http'时没有错误。你能分享一个可以重现你的问题的[mcve]吗? –

+0

使用这个URL这个代码工作正常,因为目标指出一个http ** s **链接。用** HTTP **再次尝试。尝试一下:'https:// tiny url.com/57muy' –

+0

你想完成什么?看起来你只想知道URL,而不是实际上对数据执行GET请求? –

回答

1

根据你的描述,我想你正在开发一个UWP应用程序。正如你所提到的,我们在这里得到了例外,因为重定向请求会将安全连接更改为不安全连接。为了解决这个问题,我们可以关闭自动重定向并自行重定向。

例如:

public static async Task<string> getForwardUrl(string url) 
{ 
    var handler = new System.Net.Http.HttpClientHandler(); 
    handler.AllowAutoRedirect = false; 

    var client = new System.Net.Http.HttpClient(handler); 

    var response = await client.GetAsync(url); 

    if (response.StatusCode == System.Net.HttpStatusCode.Redirect || response.StatusCode == System.Net.HttpStatusCode.Moved) 
    { 
     return response.Headers.Location.AbsoluteUri; 
    } 

    return url; 
} 
+0

是的,你的权利,这是一个UWP应用程序.. sry我平行于港口工作,并变得困惑。我会尝试。 Thx给你回复。 –

+0

YEAH它的工作原理!非常感谢你! –