如何从 iOS 应用程序内将 GCDWebServer 请求重定向到外部主机
Posted
技术标签:
【中文标题】如何从 iOS 应用程序内将 GCDWebServer 请求重定向到外部主机【英文标题】:how to redirect GCDWebServer requests to an external host from within an iOS app 【发布时间】:2015-10-04 23:35:20 【问题描述】:在我的 ios 应用程序中,我尝试添加一个简单的 GCDWebServer 重定向处理程序,如下所示:
self.webServer!.addHandlerForMethod("GET",
pathRegex: "/api/.*",
requestClass: GCDWebServerRequest.self,
processBlock: request in
let url = NSURL(string: "http://external.host\(request.URL!.absoluteString)")
return GCDWebServerResponse(redirect: url, permanent: true)
)
但我的url
格式不正确。如何从给定的 host
和 GCDWebServerRequest.URL
正确构造 NSURL
?
【问题讨论】:
url
的值是多少?看来您当前的构造可能会以两个无效的方案结束。
啊,是nil
!看来我的url
确实格式不正确。如果我硬编码一个外部 url,比如let url = NSURL(string: "http://external.host/api/playthrough_ids")
,那么它就可以工作。所以我会编辑这个问题,改写'如何用主机+request.URL
形成一个正确的NSURL
【参考方案1】:
request.URL
是一个 NSURL
对象,因此,使用它来形成具有不同主机的另一个 url 需要通过访问其 path
来拆分它,如下所示:
let url = NSURL(string: "http://host.com\(request.URL!.path)")
【讨论】:
以上是关于如何从 iOS 应用程序内将 GCDWebServer 请求重定向到外部主机的主要内容,如果未能解决你的问题,请参考以下文章