HttpClient不适用于使用Xamarin在VS中构建的IO应用程序

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了HttpClient不适用于使用Xamarin在VS中构建的IO应用程序相关的知识,希望对你有一定的参考价值。

我尝试在我的PCL / android / ios项目中提出一个等待请求。请求的功能在PCL中

public class DataService
{
    private static string _requestUri = "https://requesturi.com/";
    public static async Task<LocalizationData> GetLocalization(string code)
    {
        string queryString = _requestUri + "get_localization.php" + "?code=" + code;
        HttpClient client = new HttpClient();
        var response = await client.GetAsync(queryString);
        dynamic data = null;
        if (response != null)
        {
            string json = response.Content.ReadAsStringAsync().Result;
            data = JsonConvert.DeserializeObject(json);
            if (data["status"] == "success")
            {
                List<string> aliases = new List<string>();
                List<string> translations = new List<string>();
                foreach (var localization in data["localizations"])
                {
                    aliases.Add((string)localization["alias"]);
                    translations.Add((string)localization["translation"]);
                }
                LocalizationData localizationData = new LocalizationData(code, aliases.ToArray(), translations.ToArray());
                return localizationData;
            }
            else
            {
                return null;
            }
        }
        return null;
    }
}

在Android和iOS中我都用这个函数调用

localizationData = await DataService.GetLocalization(langCode);

在Android中,它在模拟器和真实设备上都没有问题。但是,当我尝试在iOS中运行它,在模拟器上它工作正常,在真正的设备应用程序崩溃

var response = await client.GetAsync(queryString);

这是关于权限的吗?或者是其他东西?任何人都可以帮我解决这个问题吗?

更新

client.GetAsync(queryString)有异常我在真实设备上进入应用程序:“由于对象的当前状态,操作无效”

答案

根据Xamarin forum中的帖子,这是Reference的问题。似乎httpClient实例是在单声道内存中创建的,但在iOS内存中却没有,因为iOS设备(AOT)和模拟器(JIT)构建性质不同。

试试:

1)转到ios项目的参考

2)编辑参考

3)检查'System.Net.Http'

一般情况下 - 使用ModernHttpClient - 它为本机网络API提供包装器,它比默认的.Net HttpClient更安全,更快。

以上是关于HttpClient不适用于使用Xamarin在VS中构建的IO应用程序的主要内容,如果未能解决你的问题,请参考以下文章

Windows 身份验证不适用于 HttpClient [重复]

Xamarin.Essentials Screenshot.CaptureAsync() 不适用于视频视图

GCM 推送通知不适用于 xamarin android

IsClippedToBounds 不适用于 xamarin 形式

Xamarin.Forms FlyoutPage 不适用于 Prism

语音识别不适用于 Android 5.1.1 Xamarin