c# - Xamarin IOS 应用程序连接到 IP 地址但不是域名
问题描述
我有一个简单的 Xamarin IOS 应用程序,它使用 System.Net 连接到一些 Rest 服务;下面的代码片段显示了我使用的一个简单的帖子。
client = new HttpClient();
var authHeaderValue = Convert.ToBase64String(Encoding.UTF8.GetBytes(authData));
client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Basic", authHeaderValue);
var uri = new Uri(string.Format(stringUrl));
var content = new StringContent(payload, Encoding.UTF8, "application/x-www-form-urlencoded");
try
{
response = await client.PostAsync(uri, content);
}
我遇到的问题是,如果 URL 包含服务器的 IP 地址,则应用程序成功连接到其余端点,但是如果我在 URL 上使用域名而不是 IP 地址,则 IOS 应用程序将无法连接并引发异常. 我知道端点已启动并正在运行,因为我可以从应用程序的 xamarin android 版本连接到相同的 URL 端点,但在 IOS 上它失败了。问题仅出在 URL 上使用域名时。希望有人以前见过这种奇怪的行为。还值得注意的是,在 IOS 模拟器上进行的相同测试可以正常工作,但在真正的 iphone 上却不行。谢谢
解决方案
经过一些研究,我能够通过执行以下操作来解决这个问题:
使用(HttpClient客户端=新HttpClient()){
response = await client.PostAsync(uri, content);
}
推荐阅读
- pandas - 如何在熊猫中创建多列数据透视表?
- node.js - 如何使用 passport-azure-ad 实现身份验证代码流
- php - 将 vb.net Rijndael 加密移植到 PHP OpenSSL
- android - 如何控制android kotlin中的后退按钮?
- java - 我无法访问命名空间
ruby-on-rails - 如何使用 XPath 捕获部分 ap 标签 - spring - 无法在 Spring Boot 应用程序的 application.properties 中获取环境变量
- sql - Oracle SQL 自动创建 VARCHAR 递增 PK
- intellij-idea - 获取用户在过去一小时内在 IDE 中所做的未提交/版本化更改
- windows - 在配置时从 CMake 中获取当前 Windows SDK 和 C++ RT 的路径