我正在开发一个 .NET MAUI 应用程序。当我尝试在 Android 上调试它时,出现错误
unexpected end of stream
。我正在 Android 模拟器 (API 34) 中运行。这是我的上传代码。知道为什么会发生这个错误吗?知道如何修复错误吗?我尝试调试我的 API 端点,但我的代码从未从设备中出来,因为我的断点未在 Azure 中命中。 TIA
var url = CreateUrl(userPicManagement);
var httpC = new MyHttp();
var content = new MultipartFormDataContent();
var inputData = new StreamContent(stream);
content.Add(inputData, "file");
var response = await httpC.PostAsync(url, content);
这是我使用的
HttpClient
。我添加了几个标题。我将这个 HttpClient
调用与其他方法一起使用,没有遇到问题。
public class MyHttp : System.Net.Http.HttpClient {
public MyHttp(string tok = null) {
this.DefaultRequestHeaders.Add(xxxx, yyyyy);
if(!String.IsNullOrEmpty(tok)) {
var str = String.Format("Bearer {0}", tok);
this.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", tok);
}
}
}
我认为问题在于 Android 上的默认
HttpClient
配置向服务器发送了无效的 Content-Type
标头;与 StreamContent
或 ByteArrayContent
值类型不对应的类型。
对我有用的解决方案是以不同方式配置
HttpClient
:
var client = new HttpClient(new SocketsHttpHandler()));
https://blog.lhotka.net/2024/04/18/Posting-binary-data-using-HttpClient-on-Android