Zdravím,
programuji embedded webový server s STM32F4 Discovery a LwIP stackem. To celé ještě s FreeRTOS. Webový server už mi celkem dobře funguje, Jen teda chci, z formulářů přijímat data poslaná přes POST a také Cookies z hlavičky. Zkoušel jsem napsat několik funkcí, ale žádná nebyla ideální. Poslední funkce mi fungovala jen na některých počítačích. Další, mi funguje všude, ale občas se nějak zblázní.
No přiložím jak mi to funguje.
Přijmu data přes Ethernet a dostanu je do proměnné buf. Tu sloučím ještě s další proměnnou, ve které je druhá část dat. To celé vložím do následující funkce:
int POST_parametry(char* uri){
char* params_uri;
char* equals;
char* pair;
char* pair1;
char* cookie;
int loop;
int stop = 1;
params_uri = strstr(uri, "\r\n\r\n");
pair = params_uri+4;
for(loop=0; (loop < LWIP_HTTPD_MAX_CGI_PARAMETERS) && pair; loop++){
p_params[loop] = pair;
equals = pair;
pair = strchr(pair, '&');
if(pair) {
*pair = '\0';
pair++;
} else {
pair = strchr(equals, ' ');
if(pair) {
*pair = '\0';
}
pair = NULL;
}
equals = strchr(equals, '=');
if(equals) {
*equals = '\0';
p_values[loop] = equals + 1;
} else {
p_values[loop] = NULL;
}
}
return loop;
}
Ta má vložit do dvou polí názvy POST parametrů a jejich hodnoty. Ale stejně tam háže různé znaky navíc nebo to občas ořeže a tak... Nevíte někdo, co s tím? Nebo nemáte napsanou nějakou funkci na parsování hlavičky a parametrů.
Děkuji za každý nápad