Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- bool hasParams (const char * const &data, const char * const ¶m = NULL)
- {
- const char * paramPos;
- if(param == NULL)
- paramPos = strchr (data, '?');
- else
- paramPos = strstr(data, param);
- if (paramPos == NULL)
- return false; // no parameters
- else
- return true;
- }
- char * getParam(const char * const &data, const char * const ¶m)
- {
- // Posizione di inizio del parametro cercato
- const char *paramPos = strstr(data, param) + strlen(param) +1;
- // Posizione di fine del parametro cercato
- const char *endPos = strchr(paramPos, '&');
- // Nessun '&', quindi c'è un solo parametro
- if (endPos == NULL)
- // Posizione dello spazio finale prima di HTTP/1.1
- endPos = strchr(paramPos, ' ');
- size_t len = endPos - paramPos;
- char* buf = new char[len + 1];
- strncpy ( buf, paramPos, len );
- // aggiungiamo il terminatore di stringa e ritorniamo il valore trovato
- buf[len] = '\0';
- return buf;
- }
- //////////////////////////////////// esempio di utilizzo ////////////////////////////////////
- //const char* request = "GET /?param1=123456&parma2=ciamo¶m2=mondo HTTP/1.1";
- // Se si ha una String oppure una std::string
- String clientReq = "GET /?param1=123456&parma2=ciamo¶m2=mondo HTTP/1.1";
- const char* request = clientReq.c_str();
- // Controllo solo se ci sono dei parametri nella stringa
- if(hasParams(request)){
- char* param1 = getParam(request, "param1");
- Serial.print("\nParam1: ");
- Serial.println(param1);
- char* param2 = getParam(request, "param2");
- Serial.print("\nParam2: ");
- Serial.println(param2);
- }
- // Controllo se c'è il parametro specifico nella stringa
- if(hasParams(request, "param3")){
- char* param3 = getParam(request, "param3");
- Serial.print("\nParam3: ");
- Serial.println(param3);
- }
Add Comment
Please, Sign In to add comment