Вам понадобится функция обратного вызова для обработки заголовков HTTP, см. функции обратного вызова и, в частности, обратный вызов fparsehdr :
Обратный вызов, который использует HTTP заголовок, который состоит из пары ключ-значение.
Этот обратный вызов вызывается soap :: fparse, использует HTTP-заголовок, который разбит на пару ключ-значение, и соответственно обновляет состояние контекста soap .
Назначьте этот обратный вызов и используйте переданный ему ключ заголовка HTTP и пару значений. Обязательно вызовите исходный soap->fparsehdr(soap, key, val)
в новом обратном вызове, чтобы механизм обработал все заголовки, передав их исходному обратному вызову:
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);
}
Я рекомендую передать все заголовки в движок, если это не пользовательский заголовок, который не имеет никакого значения для движка.