如何从 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 格式不正确。如何从给定的 hostGCDWebServerRequest.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 请求重定向到外部主机的主要内容,如果未能解决你的问题,请参考以下文章

在给定时间内将频率从 f1 缓慢上升到 f2 的正弦波

如何在同一页面内将值从 Js 传递到 PHP [重复]

真快!10秒内将k8s集群运行起来

从函数内将变量插入全局命名空间? [复制]

在容器内将文件从容器复制到主机

在 0 到 2.0 范围内将 UISlider 增加 0.2 [重复]