gwan REQ_ENTITY или строка запроса

с сервером gwan можно ли получить строку запроса... т.е. аргументы.

учитывая http://myserver.com/main.cpp?arg1=one&arg2=two

я хочу получить строку char arg1=one&arg2=two

согласно документам, это должно быть

REQ_ENTITY,      // char  *ENTITY          // "arg=x&arg=y..."

но это дает мне пустую строку (используя аргументы в приведенном выше URL-адресе)

char * req = (char*) get_env(argv, REQ_ENTITY);
xbuf_cat(get_reply(argv), req);;

Ага. я должен добавить, что get_arg( "arg1" ...) без проблем работает с той же самой строкой URL-адреса (предполагая, что она где-то там. возможно, необработанная строка запроса

подсказка или указатель на пример может быть всем, что нужно. также было бы неплохо, чтобы в какой-то момент эта работа работала с отображением/перенаправлением. http://myserver.com/main/arg1=one&arg2=two

С Уважением


person Gabe Rainbow    schedule 30.01.2013    source источник
comment
REQ_ENTITY предназначен для PUT или POST, а не для GET. Вы можете использовать XBUF_READ, QUERY_STRING и т. д. (см. gwan.ch/source/argv.c и примеры gwan.ch/source/served_from.c).   -  person Gil    schedule 31.01.2013
comment
QUERY_STRING предлагает имя csp без аргументов. но, возможно, получить против почты. метод цикла while (i ‹ argc) является удовлетворительным.   -  person Gabe Rainbow    schedule 02.02.2013
comment
QUERY_STRING предоставит вам все параметры, если они вызываются до PARSING (из обработчика). После синтаксического анализа вы можете использовать get_arg() или main() argv[argc], см. пример argv.c.   -  person Gil    schedule 03.02.2013


Ответы (2)


Небольшое примечание о REQ_ENTITY.

В приведенном выше примере нет REQ_ENTITY, поскольку вы выполняете только запрос GET. Если у запроса есть тело сущности (например, POST), вы можете получить тело сущности, используя REQ_ENTITY, но обычно вам это не нужно, поскольку вы можете получить к нему доступ, используя свой образец (проходя через argv) или используя get_arg().

пример get_arg()

person Richard Heath    schedule 31.01.2013

Этот хороший фрагмент кода работает для моей цели. нашел в документах. Просто объедините их. так люблю работать в c на сервере.

int i = 0;
while(i < argc)
{
    xbuf_xcat(get_reply(argv), "argv[%u] '%s'   <br>", i, argv[i]);
    i++;
}

и адаптировал его к следующему:

string concatArgs(void) {
    stringstream ss;
    int i = 0;
    while(i < argc) {
        ss << argv[i++];
    }
    return ss.str();
}
person Gabe Rainbow    schedule 30.01.2013