我正在尝试使此嵌入式HTTP服务器https://github.com/grzegorzleszek/HTTPSwiftServer在Xcode iOS iPhone上工作,我需要做的就是托管并返回一个字符串。这是非常基本的,只有一个快速文件。我必须在下面的方法中注释以下两行以使其起作用,因为最上面的那一行总是返回null,但是在禁用这些行之后,在myMac控制台上运行时,它可以正常工作并在Web浏览器中成功返回该字符串。 / p>
class func handler(_ request: CFHTTPMessage, fileHandle: FileHandle, server: HTTPServer) -> HTTPResponseHandler {
let handler = HTTPResponseHandler()
handler.fileHandle = fileHandle
handler.requestURL = CFHTTPMessageCopyRequestURL(request)!.takeUnretainedValue() as URL
handler.method = CFHTTPMessageCopyRequestMethod(request)!.takeUnretainedValue() as String
//let bodyCFData = CFHTTPMessageCopyBody(request)!.takeRetainedValue()
//handler.body = bodyCFData as Data
return handler
}
我直接下载了该示例,它在myMac上运行良好,因此在一个正常运行的独立iOS应用中,我将所有代码放入了一个快速的类文件中,除了以下几行代码外,这些行在ViewController控件中的viewDidAppear中通过单独的类文件。
let server = HTTPServer.sharedInstance
server.router = SimpleRouter()
server.start()
RunLoop.main.run()
我无法让它成功地在iPhone上连接,还有另一台来自GitHub的服务器,我不记得我可以在Mac上运行但在iPhone上也不能运行。一切都可以编译并正常运行,并且打印日志显示服务器在localhost:8080上启动,但是Web浏览器中没有连接,但是在Mac上连接正常,并且具有相同的打印日志消息。是否需要某种类型的许可或技巧才能使服务器在iOS iPhone上运行?我的iOS,Mac OS和Xcode是最新的,但是我在VMWare上使用了虚拟Mac,但是myMac控制台中的服务器仍然可以工作。我已经添加了允许对plist进行任意加载的功能,并且可以通过URLSession获得不安全的HTTP字符串,这没有问题。感谢您的帮助。
答案 0 :(得分:1)
您要在浏览器中输入什么URL?您不能使用localhost:8080
。您需要输入实际iPhone的主机名或IP地址,而不是localhost
。
localhost
是“那个”机器。它可以在模拟器中工作,因为localhost
是您的Mac,而Mac上的浏览器可以以localhost
自身连接。但是,当服务器在iPhone上并且在Mac上的浏览器中输入localhost
时,该服务器就不再在Mac上,而是在iPhone上。