HttpClient没有';t在与Xamarin在VS中构建的IOs应用程序中工作

HttpClient没有';t在与Xamarin在VS中构建的IOs应用程序中工作,ios,xamarin.ios,dotnet-httpclient,Ios,Xamarin.ios,Dotnet Httpclient,我试图在我的PCL/Android/iOs项目中提出一个等待的请求。请求的函数位于PCL中 public class DataService { private static string _requestUri = "https://requesturi.com/"; public static async Task<LocalizationData> GetLocalization(string code) { string querySt

我试图在我的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;
    }
}
公共类数据服务
{
私有静态字符串_requestUri=”https://requesturi.com/";
公共静态异步任务GetLocalization(字符串代码)
{
字符串queryString=_requestUri+“get_localization.php”+“?code=“+code;
HttpClient=新的HttpClient();
var response=await client.GetAsync(queryString);
动态数据=空;
if(响应!=null)
{
字符串json=response.Content.ReadAsStringAsync().Result;
data=JsonConvert.DeserializeObject(json);
如果(数据[“状态”]=“成功”)
{
列表别名=新列表();
列表翻译=新列表();
foreach(数据中的var本地化[“本地化”])
{
别名。添加((字符串)本地化[“别名”]);
添加((字符串)本地化[“翻译]);
}
LocalizationData LocalizationData=新的LocalizationData(代码、别名.ToArray()、翻译.ToArray());
返回本地化数据;
}
其他的
{
返回null;
}
}
返回null;
}
}
在Android和iOS中,我都用

localizationData=await DataService.GetLocalization(langCode)

在Android中,它在模拟器和真实设备上都可以正常工作。 但当我试着在iOS上运行它时,它在模拟器上运行良好,在真正的设备上应用程序崩溃

var response=wait client.GetAsync(queryString)

是关于权限的问题吗?还是别的什么? 有人能帮我解决这个问题吗

已更新

client.GetAsync(queryString)在真实设备上安装应用程序时有例外:
“由于对象的当前状态,操作无效”

根据此问题中的线程参考。似乎httpClient实例是在mono内存中创建的,而不是在iOS内存中创建的,这是由于iOS设备(AOT)和模拟器(JIT)构建性质的不同

尝试:

1) 转到ios项目的参考资料

2) 编辑引用

3) 选中“System.Net.Http”


一般来说-使用-它为本机网络API提供包装,它比默认的.Net HttpClient更安全、更快

根据本文中的线程,这是一个参考问题。似乎httpClient实例是在mono内存中创建的,而不是在iOS内存中创建的,这是由于iOS设备(AOT)和模拟器(JIT)构建性质的不同

尝试:

1) 转到ios项目的参考资料

2) 编辑引用

3) 选中“System.Net.Http”


一般来说-使用-它为本机网络API提供包装,它比默认的.Net HttpClient更安全、更快

正如我在我的问题中所说的,Android部分工作没有问题。只有当我在iOs real设备上运行应用程序时,问题才会出现。正如我在问题中所说,Android部分工作正常。只有在iOs real设备上运行应用程序时才会出现问题。请尝试连接到HTTP而不是HTTPS,并检查是否存在相同的错误?尝试连接到HTTP而不是HTTPS,并检查是否也存在相同的错误?