I am working on an ESP8266 project that in part has a web server that accepts HTML form data when the user clicks a button on the web page. The Android web browser I am using submits GET requests to my server with escaped characters like so:
GET http://192.168.1.123?IOTPass=259%25%2B99%26Hello&WiFiSSID=FBI_SURVEILLANCE_VAN&WiFiPass=we+know+what+you+did&ISYIP=192.168.0.129&ISYUser=Somebody&ISYPass=Abc123&ThermAddr=4D+2D+D5+2&TQmin=1&ISYPmin=5&IRSndSec=600&IROFFmin=60&IOTSSID=Peep&SendButton=Submit HTTP/1.1
Notice that IOTPass uses the hexadecimal macro "%25" to indicate an embedded "%" character in the password and "%26" to indicate an embedded "+". It also replaces embedded spaces in the parameters with "+" characters in the WiFiPass and ThermAddr fields.
I wrote a parser that works pretty well using strtok() and other string functions, but I have to think that I am probably reinventing the wheel. Is there an existing Arduino library that "unescapes" GET parameters like these?
Note that the browser is doing the escaping and I have to allow "funny characters" in various fields so changing the format is not possible.