我需要我的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总是nil。
提示吗?
-
你不能在iOS设备的80端口上启动web服务器。使用1024以下的端口需要root权限,而你的应用没有root权限。
-
web服务器路径不能包含域名…web服务器将始终绑定到设备的地址。您只需添加端点的url。
"path"
为http://<yourdeviceip>:<port>/path
您的配置不正确,其背后的想法是您的应用程序本身成为一个服务器,您可以配置它来接受传入的请求。
在您的addHandlerForMethod
中,您将路径设置为"https://myendpoint.com":这没有意义。
您的应用程序将创建一个新的服务器,因此它将生成自己的服务器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