gSoap - 从请求中解析自定义 http header

gSoap - parse custom http header from request

我正在尝试查找有关如何解析 gSoap 服务器应用程序在请求中收到的自定义 http headers 的一些信息。我花了几个小时试图找到关于此的任何文档,但到目前为止我还没有成功。

我看到很多关于如何为客户端和服务器设置 自定义 http headers 的文档(例如通过 http_extra_header 属性),但不是关于如何从收到的请求中读取它们。似乎 gSoap 支持解析现有的标准化 headers(例如:X-Forwarded-For),但到目前为止我无法弄清楚如何访问尚未定义的 headers。我通常擅长搜索这样的东西,但我一直在寻找 gSoap header files, soap headers,或 setting http headers。到目前为止,没有关于接收和解析尚未 well-defined.

的自定义 header 的内容

非常感谢任何帮助。

您将需要一个回调函数来处理 HTTP headers,请参阅 callback functions and in particular the fparsehdr callback:

Callback that consumes an HTTP header that consists of a key-value pair.

This callback is called by soap::fparse, consumes an HTTP header that is split in a key-value pair and updates the soap context state accordingly.

分配此回调并使用传递给它的 HTTP header 键值对。确保在新回调中调用原始 soap->fparsehdr(soap, key, val),让引擎通过将所有 header 传递给原始回调来处理它们:

soap->user = (void*)soap->fparsehdr; // to call fparsehdr() in our callback
soap->fparsehdr = my_parsehdr;

新的回调函数:

typedef int(*PARSEFUNC)(struct soap*, const char*, const char*);
int my_parsehdr(struct soap *soap, const char *key, const char *val)
{
  ... // check key (non-NULL) and use val (non-NULL)
  return ((PARSEFUNC)(soap->user))(soap, key, val);
}

我建议将所有 header 传递给引擎,除非它是对引擎没有意义的自定义 header。