【问题标题】:GCDWebServer static website on SwiftSwift 上的 GCDWebServer 静态网站
【发布时间】:2016-01-01 06:34:42
【问题描述】:

我正在尝试让 GCDWebServer 显示静态内容。我有代码

import UIKit
import Foundation

class ViewController: UIViewController {

  var webServer:GCDWebServer?

  let urlpath = NSBundle.mainBundle().pathForResource("index", ofType: "html", inDirectory: "www")

  override func viewDidLoad() {
    super.viewDidLoad()

    initWebServer()

  }

  func initWebServer() {

    webServer = GCDWebServer()

    webServer!.addGETHandlerForBasePath("/", directoryPath: urlpath, indexFilename: "index.html", cacheAge: 3600, allowRangeRequests: true)

    webServer!.startWithPort(8080, bonjourName: "GCD Web Server")

    print("Visit \(webServer!.serverURL) in your web browser")
}
}

我的 Xcode 项目的根目录中有 www 文件夹

当服务器启动时,它在控制台中显示服务器地址是 192.168.1.2:8080。但是当我尝试在浏览器中打开该网址时,我在控制台中看不到 index.html、黑屏和 404。

我做错了什么?

【问题讨论】:

    标签: swift gcdwebserver


    【解决方案1】:

    您需要将目录的完整路径传递给 directoryPath,请看下面我的代码示例:

    private func loadDefaultIndexFile() {
        let mainBundle = NSBundle.mainBundle()
        let folderPath = mainBundle.pathForResource("www", ofType: nil)
        print("HTML base folder Path: \(folderPath)")
        self.gcdWebServer.addGETHandlerForBasePath("/", directoryPath: folderPath, indexFilename: "index.html", cacheAge: 0, allowRangeRequests: true)
        self.gcdWebServer.startWithPort(8080, bonjourName: nil)
        self.webView.loadRequest(NSURLRequest(URL: self.gcdWebServer.serverURL))
    }
    

    希望对你有帮助

    【讨论】:

      【解决方案2】:

      您需要在初始化时将目录的路径传递给 GCDWebServer,而不是向 GCDWebServer 提供索引文件。

      【讨论】:

      • 有点怀疑我弄乱了pass。哪一个是正确的?
      猜你喜欢
      • 2015-07-15
      • 2018-09-14
      • 1970-01-01
      • 2015-09-08
      • 2011-11-16
      • 2017-08-05
      • 1970-01-01
      • 1970-01-01
      • 2011-07-06
      相关资源
      最近更新 更多