iOS 17 URL 编码导致 Xamarin.Forms 出现问题

问题描述 投票:0回答:1

我有一个 xamarin.forms 应用程序,它有一个像这样的 GET Api URL

sampleurl.com/my-app-data/requests?orderBy=-created_at&related=user,+role&perPage=100

这在 Andorid 和 iOS 16 上运行良好。但是在 iOS 17 之后,URL 中的

"?"
更改为
"%"
,如下所示。

sampleurl.com/my-app-data/requests%orderBy=-created_at&related=user,+role&perPage=100

这会导致错误。我猜测是在 iOS 17 之后苹果引入了 url 解析行为导致了这个问题。我们如何解决这个问题?

我负责处理API调用的代码如下

  var client = new HttpClient { BaseAddress = baseAddress };
                client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
                var current = Connectivity.NetworkAccess;

                    if (receivedMethod == APIMethodConstants.GET)
                    {
                        req = new HttpRequestMessage(HttpMethod.Get, apiurl);
                        client.DefaultRequestHeaders.Authorization =
                        new AuthenticationHeaderValue("bearer", JwtToken);
                        Task<string> task = Task.Run(async () => await Threading(client, req));
                        task.Wait();
                        stringObtained = task.Result;
                        jsonObtained = stringObtained;
                    }

        async Task<string> Threading(HttpClient client, HttpRequestMessage req)
        {
            WebUtility.UrlDecode(req.RequestUri.ToString());
            var resp = await client.SendAsync(req);
            switch (resp.StatusCode)
            {
                  //rest logic
            }
            return stringObtained;
        }

如有任何帮助,我们将不胜感激。

c# ios xamarin xamarin.forms
1个回答
0
投票

我尝试使用 URIBuilder 和其他东西构建 URL,但没有一个适用于 iOS 17。我将 HttpClient 实现从

Managed
更改为
NsUrlSession
,我所有有问题的 API 都开始在 iOS 17 中工作。我认为这可能是暂时的解决方案,因为将其更改为
Managed
可能会导致性能问题。如果发现其他方式会更新。

© www.soinside.com 2019 - 2024. All rights reserved.