【发布时间】:2021-11-22 10:38:01
【问题描述】:
我们正在使用 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();
}
}
这在 iOS 链接设备上失败,但对于 Android 模拟器它可以工作。我需要针对 iOS 进行更改吗?
更新
代码在除我之外的多台机器上工作,试图弄清楚这可能是什么设置,任何想法将不胜感激。
【问题讨论】:
-
您在 VS 输出窗格中看到该异常之后的堆栈转储吗?如果是这样,请将堆栈转储添加到您的问题中。谷歌表明这有时是 ios 上各种库的问题。我看到的唯一具体原因是内存不足。谷歌
Received unhandled Objective C exception: NSMallocException Failed to grow buffer -
尝试在 PostMan 中执行相同的请求。这有时会给出更丰富的回应。具体与此错误无关,但有时在末尾添加
/可以避免重定向。 (重定向可能会丢失正文 json 内容)"/t/l4x2e-1637576441/post/" -
您的代码看起来完全正确,我用
VS 2022 , Xamarin.Forms 5 , iPhone12 simulator , iOS 15.0测试,它工作正常,没有任何错误。 -
@ColeX-MSFT,感谢您的测试,知道什么设置会影响这个吗?我在多部 iPhone 上进行了测试。
-
这是内存溢出错误,您的 iPhone 规格是什么?如果它太旧(例如 iPhone5),它可能会引发错误,因为它的内存量较少,请在较新的 iPhone 上尝试。
标签: ios xamarin.forms httpclient