c# - Xamarin.ios 不能在真正的 iOS 设备上运行,但它可以在模拟器上运行
问题描述
我构建了一个移动应用程序。这个应用程序在 iOS 模拟器、Android 模拟器和 Android 真机上运行良好。但是当我在 TestFlight 上发布它并安装在真正的 iOS 设备上时,这个应用程序就不起作用了。我没有收到任何错误。我的微调器(激活器指示器)一直在运行,我无法从 HttpResponse 获得任何响应。我用Web 服务构建了这个应用程序。因此我使用http://46.221..... url 来发布或获取请求。我以为 iOS 不支持http请求是因为安全。但如果这是真的那么为什么这个应用程序在模拟器上运行得很好?我找不到任何解决方案。这是我的部分代码:
public async Task<BSUser> ValidateUser(string userName, string password)
{
string url = Xamarin.Essentials.Preferences.Get(Constants.URL_KEY, "") + "/api/Validateuser";
HttpClient _Client = new HttpClient();
var data = new Dictionary<string, string>
{
{"userName", userName},
{"password", password}
};
string jsonData = JsonConvert.SerializeObject(data);
HttpContent content = new StringContent(jsonData, Encoding.UTF8, "application/json");
try
{
HttpResponseMessage httpResponse = await _Client.PostAsync(url, content);
if (httpResponse.IsSuccessStatusCode)
{
var responseData = await httpResponse.Content.ReadAsStringAsync().ConfigureAwait(false);
var result = JsonConvert.DeserializeObject(responseData).ToString();
UserInfo userInfo = JsonConvert.DeserializeObject<UserInfo>(result);
BSUser value = new BSUser();
value.UserName = userInfo.userCode;
return value;
}
else
{
return null;
}
}
catch (SystemException)
{
return null;
}
}
解决方案
我发现了我的项目的问题。它与 HTTPS-HTTP 或安全情况无关。这太荒谬和不合逻辑,但这是真正的问题。我的应用程序可以在任何 iOS 模拟器上运行良好,但是,Visual Studio 中模拟器的最低版本是iPhone-8。但是当我在iPhone-6 的真实设备上安装我的应用程序时,我得到了Newtonsoft.Json.JsonSerializationException错误。但是我的 HttpResponse 返回了 200OK,我看到所有来自我的服务的值都是 json。我认为旧 ve 新版本的 iPhone 转换 Json 序列化之间存在一些差异。
推荐阅读
- sql - postgresql中如何实现复杂的嵌套查询?
- php - 如何输出 Json 数组并循环变量
- c# - jsreport - C# 中的访问被拒绝消息
- three.js - Bone 和 Group 有什么区别?如何获得一个组的骨头?
- javascript - 按钮内的 CSS 图像与弹出窗口中的标题文本位于同一行
- modelica - OMEdit 模拟标志“-override”和“-overrideFile”用法
- amazon-quicksight - 如何在亚马逊 quicksight 中为日期时间选择器设置动态默认参数值?
- visual-studio - 如何为 Visual Studio 2019 添加/修改私有注册表项?
- php - php tcpdf writeHTML() 使用时失败
- c# - 如何自动将日期插入到 datagridview 中?