Xamarin Forms HttpClient PostAsync 总是抛出 NSMallocException
Xamarin Forms HttpClient PostAsync always throw NSMallocException
我们正在使用 Xamarin Forms 5 和 Visual Studio 2022 为 iOS 和 Android 构建移动应用程序。当我们向任何 api,无论是我们自己的还是外部的 api,我们总是返回:
Xamarin.PreBuilt.iOS[3728:2199180] Xamarin.iOS: Received unhandled ObjectiveC exception: NSMallocException Failed to grow buffer
GET 请求工作正常。我搜索了 Google 和 Whosebug,但找不到任何帮助。我试过增加 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();
}
}
这在 iOS 链接设备上失败,但对于 Android 模拟器它有效。我需要为 iOS 更改什么吗?
更新
该代码可在除我以外的多台机器上运行,试图弄清楚这可能是什么设置,任何想法将不胜感激。
我遇到了完全相同的问题,并在 VS 反馈论坛上向 Microsoft 提交了一张票。然后今天我找到了一个简单的解决方法。至少我认为这是一种变通方法而不是解决方案。我在哪里
HttpClient client = new HttpClient()
我改为这样做:
var handler = new HttpClientHandler();
HttpClient client = new HttpClient(handler);
还有宾果游戏,现在可以玩了。
我们正在使用 Xamarin Forms 5 和 Visual Studio 2022 为 iOS 和 Android 构建移动应用程序。当我们向任何 api,无论是我们自己的还是外部的 api,我们总是返回:
Xamarin.PreBuilt.iOS[3728:2199180] Xamarin.iOS: Received unhandled ObjectiveC exception: NSMallocException Failed to grow buffer
GET 请求工作正常。我搜索了 Google 和 Whosebug,但找不到任何帮助。我试过增加 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();
}
}
这在 iOS 链接设备上失败,但对于 Android 模拟器它有效。我需要为 iOS 更改什么吗?
更新
该代码可在除我以外的多台机器上运行,试图弄清楚这可能是什么设置,任何想法将不胜感激。
我遇到了完全相同的问题,并在 VS 反馈论坛上向 Microsoft 提交了一张票。然后今天我找到了一个简单的解决方法。至少我认为这是一种变通方法而不是解决方案。我在哪里
HttpClient client = new HttpClient()
我改为这样做:
var handler = new HttpClientHandler();
HttpClient client = new HttpClient(handler);
还有宾果游戏,现在可以玩了。