首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >解决webview中的dns查找问题

解决webview中的dns查找问题
EN

Stack Overflow用户
提问于 2015-09-15 03:41:57
回答 1查看 2.2K关注 0票数 1

我们公司的应用程序主要是嵌入在android/iPhone原生应用程序中的webview。在某些区域,dns查找总是失败,这会导致打开我们的网页时出现错误。

我们发现了一种名为HttpDNS的技术,它可以解决纯本地应用程序的dns查找问题,因为它可以通过ip(从HttpDNS获取)而非域发送http请求,并手动设置http标头域。然而,在webview中,我们不能这样做。

那么,是否有办法解决webview中的dns问题?谢谢(我们发现我们可以在app中设置一个代理,它可以解决dns查找问题,但这种方法并不新颖。)。

EN

回答 1

Stack Overflow用户

发布于 2015-09-15 04:46:13

你可以:

  • 检测页面加载失败并重试
  • 提供一个自定义委托,用于拦截每个请求,执行查找,使用NSURLConnection/NSURLSession加载内容,然后将内容注入web视图。

当然,这两种方法都不是完美的,因为只有当用户在web视图中加载替换当前页面的页面(而不是随机的XMLHTTPRequest调用)时,这两种方法才是有效的。

然后,总会有:

  • Swizzle NSURLConnection和NSURLSession,根据您自己的查找代码的结果重写请求对象,并覆盖header字段。

尽管这确实具有即使对XHR也有效的优点,但我倾向于建议对于公开发布的应用程序不采用这种方法,原因有三个:

  • 苹果公司说,不要碰header字段,这意味着未来的操作系统更新可能会破坏这种行为(假设它甚至有效)。
  • 如果不正确地处理这些类,那么就很容易破坏这些类。
  • 它将改变这些类对来自应用程序的每个请求的行为方式,而不仅仅是由web视图发出的请求。

当然,您可以通过添加libcurl并使用libcurl来执行实际的请求来避免第一个问题,但是这样您就进入了非常可怕的兼容性领域。:-)

您最好找出DNS查找失败的原因。它是否被滥用的ISP或政府在当地封锁?您能将VPN技术添加到应用程序中,以便通过隧道发送对URL (和DNS查找)的请求吗?

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32577326

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档