【发布时间】:2021-04-12 12:13:47
【问题描述】:
我构建了一个移动应用程序。这个应用程序在 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;
}
}
【问题讨论】:
-
你发布到 TestFlight
Releasebuild withNSUrlSessionhttp 客户端实现了吗? -
嗨阿列克谢!当我发布它时,我没有使用 NSUrlSession 构建它。但是我在 info.plist 中添加了 '
NSAppTransportSecurity '你能举例说明你的建议吗?NSAllowsArbitraryLoads NSAllowsArbitraryLoadsInWebContent -
如果使用
HttpClient的默认托管实现,所有这些设置都将无效,试试NSUrlSession这个设置,也许会有所帮助。 -
我找到了你说的。我再次使用 NSUrlSession 将我的应用程序发布到 TestFlight,但我有同样的错误。当我尝试登录时,我的应用程序崩溃并出现故障。但是iOS模拟器仍然可以正常工作。太有趣了!
-
在这种情况下我所能推荐的就是改进您的日志记录和错误处理。
标签: c# ios web-services xamarin.ios rest