我需要我的Swift 2.1应用程序来侦听由另一个服务到达我的公共端点的HTTP POST。不知道如何初始化GCDWebserver。
let webServer = GCDWebServer()
我试过了:
webServer.addHandlerForMethod("POST", path: "https://myendpoint.com",
requestClass: GCDWebServerRequest.self, asyncProcessBlock: { request in
print("WebServer - POST detected")
})
webServer.startWithPort(80, bonjourName: "Web Server")
和
try! webServer.startWithOptions([GCDWebServerOption_BonjourName: "", GCDWebServerOption_BonjourType: "https://myendpoint.com", GCDWebServerOption_Port : 80, GCDWebServerOption_AutomaticallySuspendInBackground: false])
和
webServer.addHandlerForMethod("POST", path:"https://myendpoint.com", requestClass: GCDWebServerURLEncodedFormRequest.self, asyncProcessBlock: {request in
print("WebServer: POST captured")
})
webServer.start()
但我没有到达任何地方。
无论我尝试什么,URL属性都指向我的localhost,而publicURL总是为零。
任何提示?
答案 0 :(得分:0)
您无法在iOS设备上的端口80上启动网络服务器。使用1024以下的端口需要您的应用程序不具备的root权限。
网络服务器路径不能包含域名...网络服务器将始终绑定到设备的地址...您只需添加端点的网址即可。 "path"
将为http://<yourdeviceip>:<port>/path
答案 1 :(得分:0)
您的配置不正确,其背后的想法是您的应用程序成为服务器本身,您可以配置为接受传入请求。
在addHandlerForMethod
中,您设置的路径为&#34; https://myendpoint.com&#34; :它没有意义。
您的应用程序将创建一个新服务器,因此它将生成自己的服务器URL(应该是您设备的IP,然后是您选择的自定义端口)。
我在Swift 2.3中使用它,所以可能语法本身有点不同,但想法就是这个:
// Create the server
let webServer = GCDWebServer()
// Configure different paths
let path = "/action"
webServer.addHandlerForMethod("POST", path: action, requestClass: GCDWebServerRequest.self, asyncProcessBlock: { request in
print("WebServer - POST detected")
return GCDWebServerResponse(statusCode: 200)
})
// Start server on port 8080
webServer.startWithPort(8080, bonjourName: nil)
// Print server url
print("Server url: \(webServer.serverURL)")
使用此配置,您的服务器将能够在路径上接收POST请求
http://<your-device-ip>:8080/action