HttpClient没有';t在与Xamarin在VS中构建的IOs应用程序中工作
我试图在我的PCL/Android/iOs项目中提出一个等待的请求。请求的函数位于PCL中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
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,并检查是否也存在相同的错误?