【问题标题】:Xamarin IOS App Connects to IP Address but not Domain nameXamarin IOS 应用程序连接到 IP 地址但不是域名
【发布时间】: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


【解决方案1】:

经过一些研究,我能够通过执行以下操作来解决这个问题:

使用 (HttpClient 客户端 = 新 HttpClient()) {

  response = await client.PostAsync(uri, content);

}

【讨论】:

    猜你喜欢
    • 2015-01-22
    • 1970-01-01
    • 2012-03-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多