区分 GCDWebServer 中的表单操作?

Posted

技术标签:

【中文标题】区分 GCDWebServer 中的表单操作?【英文标题】:Differentiate form actions in GCDWebServer? 【发布时间】:2015-04-05 20:51:57 【问题描述】:

我在通过 GCDWebServer 托管的 html 页面上使用两种表单。我有这样的第一个表单设置......

<form name=\"vendorInput\" method=\"post\" enctype=\"application/x-www-form-urlencoded\">
<input type=submit value='Add Vendor' action=\"/\">

第二个表单设置是这样的......

<form name=\"vendorInput\" method=\"post\" enctype=\"application/x-www-form-urlencoded\">
<input type=submit value='Add Item' action=\"/\">

我找不到任何对此提供支持的文档;并且我键入的除/ 之外的任何操作字符串都会导致 HTML 请求中断。 有没有办法为 GCDWebServer 中的表单提交按钮解析不同的操作?

【问题讨论】:

【参考方案1】:

您只需为每个表单设置不同的路径,然后为每个路径实现一个 GCDWebServer 处理程序:

[webServer addHandlerForMethod:@"POST"
                          path:@"/path1"
                  requestClass:[GCDWebServerURLEncodedFormRequest class]
                  processBlock:^GCDWebServerResponse *(GCDWebServerRequest* request) 

  // Do something with form data i.e. [[(GCDWebServerURLEncodedFormRequest*)request arguments]
  return [GCDWebServerDataResponse responseWithHTML:@"<html><body>OK</body></html>"];

];

[webServer addHandlerForMethod:@"POST"
                          path:@"/path2"
                  requestClass:[GCDWebServerURLEncodedFormRequest class]
                  processBlock:^GCDWebServerResponse *(GCDWebServerRequest* request) 

  // Do something with form data i.e. [[(GCDWebServerURLEncodedFormRequest*)request arguments]
  return [GCDWebServerDataResponse responseWithHTML:@"<html><body>OK</body></html>"];

];

有关示例,请参阅 https://github.com/swisspol/GCDWebServer#advanced-example-2-implementing-forms。

【讨论】:

以上是关于区分 GCDWebServer 中的表单操作?的主要内容,如果未能解决你的问题,请参考以下文章

需要帮助使用 GCDWebServerDataRequest 实现 GCDWebServer

GCDWebServer 总是在选项检查时中止

客户端无法从 gcdwebserver 接收图像数据

表单请求不包含密钥

tvOS 上的 GCDWebServer

GCDWebserver 监听 HTTP POST