【发布时间】:2018-10-24 17:11:35
【问题描述】:
我有一个简单的 Xamarin IOS 应用程序,它使用 System.Net 连接到一些 Rest 服务;下面的代码 sn-p 显示了我使用的一个简单的 Post。
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 上却不行。谢谢
【问题讨论】:
-
手机Safari能解析域名吗?
-
是的,我可以使用 Safari 访问域,没问题。它只是找不到它的应用程序。我也尝试更改 iphone DNS 但没有运气。
-
您使用的是哪个 HTTP 堆栈?
-
我正在使用 System.net
-
不,在您的 iOS 项目设置中,您可以选择用于 HTTPClient 的底层 HTTP 实现
标签: c# xamarin.ios system.net