Xamarin Forms HttpClient PostAsync 总是抛出 NSMallocException

Bar*_*dee 5 httpclient ios xamarin.forms

我们正在使用 Xamarin Forms 5 和 Visual Studio 2022 构建适用于 iOS 和 Android 的移动应用程序。当我们向任何 api 发出 Post 请求时,我们自己的外部 api 总是会返回:

Xamarin.PreBuilt.iOS[3728:2199180] Xamarin.iOS: Received unhandled ObjectiveC exception: NSMallocException Failed to grow buffer

GET 请求工作正常。我搜索了 Google 和 StackOverflow 但找不到任何帮助。我尝试增加 HttpClient.MaxResponseContentBufferSize 没有任何区别。

现在的应用程序非常简单,一个页面有一个测试按钮。后台代码如下:

public partial class MainPage : ContentPage
    {
        public MainPage()
        {
            InitializeComponent();
        }

        private async void Button_Clicked(object sender, EventArgs e)
        {
            var client = new HttpClient();
            client.BaseAddress = new Uri("https://ptsv2.com/");

            string jsonData = @"{}";

            var content = new StringContent(jsonData, Encoding.UTF8, "application/json");
            HttpResponseMessage response = await client.PostAsync("/t/l4x2e-1637576441/post", content);

            var result = await response.Content.ReadAsStringAsync();
        }
    } 
Run Code Online (Sandbox Code Playgroud)

这在 iOS 链接设备上失败,但对于 Android Simulator 则有效。对于 iOS,我需要更改什么吗?

更新

该代码适用于除我之外的多台机器,试图找出这可能是什么设置,任何想法将不胜感激。

小智 4

我遇到了完全相同的问题,并已在 VS 反馈论坛上向 Microsoft 提交了一张票证。然后今天我找到了一个简单的解决方法。至少我认为这是一种解决方法,而不是解决方案。我曾经在哪里

HttpClient client = new HttpClient() 
Run Code Online (Sandbox Code Playgroud)

我改为这样做:

var handler = new HttpClientHandler();
HttpClient client = new HttpClient(handler);
Run Code Online (Sandbox Code Playgroud)

宾果游戏,现在可以了。