From aa94789e0254c3cd74547bc37f653ffb869ada6c Mon Sep 17 00:00:00 2001 From: Simon Rozsival Date: Thu, 16 May 2024 10:40:16 +0200 Subject: [PATCH 1/2] Add test --- .../AndroidMessageHandlerTests.cs | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/tests/Mono.Android-Tests/Xamarin.Android.Net/AndroidMessageHandlerTests.cs b/tests/Mono.Android-Tests/Xamarin.Android.Net/AndroidMessageHandlerTests.cs index b71ee2893da..a98ff834d20 100644 --- a/tests/Mono.Android-Tests/Xamarin.Android.Net/AndroidMessageHandlerTests.cs +++ b/tests/Mono.Android-Tests/Xamarin.Android.Net/AndroidMessageHandlerTests.cs @@ -234,6 +234,20 @@ public async Task ServerCertificateCustomValidationCallback_Redirects () Assert.IsTrue (result.IsSuccessStatusCode); } + [Test] + public async Task AndroidMessageHandlerFollows308PermanentRedirect () + { + int callbackCounter = 0; + + var handler = new AndroidMessageHandler (); + + var client = new HttpClient (handler); + var result = await client.GetAsync ("https://httpbin.org/redirect-to?url=https://www.microsoft.com/&status_code=308"); + + Assert.IsTrue (result.IsSuccessStatusCode); + Assert.AreEqual ("https://www.microsoft.com/", result.RequestMessage.RequestUri.ToString ()); + } + private async Task AssertRejectsRemoteCertificate (Func makeRequest) { // there is a difference between the exception that's thrown in the .NET build and the legacy Xamarin From 60b93025fc0573c8645be6f368c778e642155985 Mon Sep 17 00:00:00 2001 From: Simon Rozsival Date: Thu, 16 May 2024 10:41:37 +0200 Subject: [PATCH 2/2] Handle 308: Permanent redirect --- src/Mono.Android/Xamarin.Android.Net/AndroidMessageHandler.cs | 1 + 1 file changed, 1 insertion(+) diff --git a/src/Mono.Android/Xamarin.Android.Net/AndroidMessageHandler.cs b/src/Mono.Android/Xamarin.Android.Net/AndroidMessageHandler.cs index e5218687ae7..fef5fc2cc03 100644 --- a/src/Mono.Android/Xamarin.Android.Net/AndroidMessageHandler.cs +++ b/src/Mono.Android/Xamarin.Android.Net/AndroidMessageHandler.cs @@ -827,6 +827,7 @@ bool HandleRedirect (HttpStatusCode redirectCode, HttpURLConnection httpConnecti // what to do with the response case HttpStatusCode.TemporaryRedirect: // 307 + case HttpStatusCode.PermanentRedirect: // 308 break; default: