首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >GCDWebserver监听HTTP

GCDWebserver监听HTTP
EN

Stack Overflow用户
提问于 2016-10-28 05:44:55
回答 2查看 2.2K关注 0票数 0

我需要我的SWIFT2.1应用程序来监听由另一个服务到达我的公共端点的HTTP帖子。不知道如何初始化GCDWebserver。

代码语言:javascript
复制
let webServer = GCDWebServer()

我试过:

代码语言:javascript
复制
webServer.addHandlerForMethod("POST", path: "https://myendpoint.com",
    requestClass: GCDWebServerRequest.self, asyncProcessBlock: { request in
    print("WebServer - POST detected")
})
webServer.startWithPort(80, bonjourName: "Web Server")

代码语言:javascript
复制
try! webServer.startWithOptions([GCDWebServerOption_BonjourName: "", GCDWebServerOption_BonjourType: "https://myendpoint.com", GCDWebServerOption_Port : 80, GCDWebServerOption_AutomaticallySuspendInBackground: false])

代码语言:javascript
复制
webServer.addHandlerForMethod("POST", path:"https://myendpoint.com", requestClass: GCDWebServerURLEncodedFormRequest.self, asyncProcessBlock: {request in
    print("WebServer: POST captured")
})
webServer.start()

但我哪儿也不会去。

无论我尝试什么,URL属性都指向我的localhost,而publicURL总是为零。

有小费吗?

EN

回答 2

Stack Overflow用户

发布于 2016-10-28 09:57:31

  1. 您不能在iOS设备上的端口80上启动can服务器。使用低于1024的端口需要根目录特权,而您的应用程序没有这些权限。
  2. can服务器路径不能包含域名..。the服务器将始终绑定到设备的地址。只需添加端点的url即可。"path"将是http://<yourdeviceip>:<port>/path
票数 0
EN

Stack Overflow用户

发布于 2016-10-28 10:01:43

您的配置是不正确的,其背后的想法是您的应用程序变成了一个服务器本身,您可以配置它来接受传入的请求。

在您的addHandlerForMethod中,您将路径设置为"https://myendpoint.com/":这是没有意义的。

您的应用程序将创建一个新服务器,因此它将生成自己的服务器URL (这应该是设备的ip,然后是您选择的自定义端口)。

我在Swift 2.3中使用它,所以语法本身可能有点不同,但是这个想法是:

代码语言:javascript
复制
// 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请求。

代码语言:javascript
复制
http://<your-device-ip>:8080/action
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40298765

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档