2017-02-22 4 views
0

Der folgende CodeA Httprequest Redirect Ausnahme in UWP Projekt

geht
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); 
    } 
    //... 
} 

Als ich dies in einem uwp Projekt ausführen, tritt Ausnahme. Die Nachricht dieser Ausnahme zeigt, dass die Umleitungsanforderung die sichere Verbindung in eine unsichere ändern würde (Danach habe ich die URL der Anmeldeseite überprüft. Es ist https, aber die Seite, nachdem ich mich angemeldet habe, ist http).

Ich finde eine ähnliche Frage, er empfiehlt Windows.Web.Http anstelle von System.Net.Http, aber ich bekomme die gleiche Fehlermeldung.

Vielen Dank für Ihre Antwort

EDIT: Die URL lautet: https://tinyurl.com/57muy (den Raum entfernen) oder kurze http URL mit tinyurl.com! Das Problem tritt nur mit einem Shortet http Seite auf! Fehler: Beim Senden der Anfrage ist ein Fehler aufgetreten. Innermessage: Fehlermeldung für diesen Fehler nicht gefunden

+1

ich mit der URL getestet 'tinyurl.com/KindleWireless' Sie erwähnt haben, funktioniert aber alles gut in meiner Seite. Es gibt keinen Fehler, wenn ich 'System.Net.Http' mit Ihrem Code verwende. Könnten Sie ein [mcve] teilen, das Ihr Problem reproduzieren kann? –

+0

Mit dieser URL funktioniert dieser Code gut, da das Ziel auf einen http ** s ** Link hinweist. Probieren Sie es erneut mit ** HTTP **. Versuchen Sie es mit: "https: // tiny url.com/57muy" –

+0

Was versuchen Sie zu erreichen? Es sieht so aus, als ob Sie nur die URL wissen möchten, aber nicht eine GET-Anfrage für die Daten durchführen möchten. –

Antwort

1

Ihrer Beschreibung nach würde ich annehmen, dass Sie eine UWP-App entwickeln. Und wie Sie bereits erwähnt haben, haben wir hier eine Ausnahme erhalten, da die Umleitungsanfrage die sichere Verbindung zu einer unsicheren ändern würde. Um dieses Problem zu lösen, können wir die automatische Weiterleitung deaktivieren und die Weiterleitung selbst durchführen.

Zum Beispiel:

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

Ja, dein Recht, das ist eine UWP-App .. sry ich arbeite parallel zu einem Port und wird verwirrt. Ich werde es versuchen. Danke für deine Antwort. –

+0

JA es funktioniert! Vielen Dank! –

Verwandte Themen