在libmicrohttpd中发布数据处理

时间:2014-12-12 05:54:51

标签: c http httprequest

我正在使用libmicrohttpd(http://www.gnu.org/software/libmicrohttpd/)来实现一个服务器,该服务器接受来自客户端的文件(HTML页面)并对其进行加密并将其发送回客户端。我正在向服务器发出POST请求,其中包含文件和选项,服务器是否应加密或解密已加密的文件。

我知道“KEY:VALUE”对用于通过POST_PROCESSOR处理POST数据,但我找不到任何关于如何使用POST_PROCESSOR从客户端获取POST数据的良好支持文档。

我正在寻找一个关于如何获取客户端发送的数据的示例,我认为有人可以帮助我。

我选择了libmicrohttpd,因为加密需要更好的性能,因为它需要时间并且在c中实现它将是一个不错的选择。关于可用于实现上述内容的替代框架的任何建议也会有所帮助(最有可能的情况是java api可以充当客户端)。

提前致谢。

1 个答案:

答案 0 :(得分:1)

今天我在类似的question中发表了评论:

  

我也使用GNU libmicrohttpd,我发现了一个简单的POST演示   repository

     

演示有点简单:它有一个表格询问你的   名称,所以当你输入你的名字并点击"发送"按钮,   发布的数据在answer_to_connection()函数中处理:

所以我从原始演示中发送了一小部分:

static int answer_to_connection (void *cls, struct MHD_Connection *connection,
                      const char *url, const char *method,
                      const char *version, const char *upload_data,
                      size_t *upload_data_size, void **con_cls)
{
...

  if (0 == strcmp (method, "POST"))
    {
      struct connection_info_struct *con_info = *con_cls;

      if (*upload_data_size != 0)
        {
          MHD_post_process (con_info->postprocessor, upload_data,
                            *upload_data_size);
          *upload_data_size = 0;

          return MHD_YES;
        }
      else if (NULL != con_info->answerstring)
        return send_page (connection, con_info->answerstring);
    }
...

我相信这个演示可以帮到你,因为我做了一些测试并且工作正常。 =)