Получите более одного аргумента GET на веб-сервере Asynch ESP8266 - PullRequest
0 голосов
/ 12 октября 2019

Я хотел бы создать крошечное приложение для веб-сервера для моего ESP8266.

Если я отправляю запрос GET из моего браузера на сервер ESP8266, я могу получить только один аргумент. Вот код моей процедуры отправки:

<form method="get" action="/get">      
<fieldset>      
    <legend>Select Pumps</legend>      
    <input type="checkbox" name="message" value="1">Pump 1<br>      
    <input type="checkbox" name="message" value="2">Pump 2<br>      
    <input type="checkbox" name="message" value="3">Pump 3<br>
    <input type="checkbox" name="message" value="4">Pump 4<br>    
    <input type="checkbox" name="message" value="5">Pump 5<br>    
    <input type="checkbox" name="message" value="6">Pump 6<br>    
    <input type="checkbox" name="message" value="7">Pump 7<br>    
    <input type="checkbox" name="message" value="8">Pump 8<br>    
    <br>      
    <input type="submit" value="Start waterring!" />      
</fieldset>      

Когда форма отправлена, сервер должен вернуть мне все аргументы запроса get, но он возвращает только первый аргумент

Hello, GET: 3
/get?message=3&message=4

Вот фактический код для обработки запроса:

    // Send a GET request to <IP>/get?message=<message>
server.on("/get", HTTP_GET, [] (AsyncWebServerRequest *request) {
    String message;
    if (request->hasParam(PARAM_MESSAGE)) {
        message = request->getParam(PARAM_MESSAGE)->value();
    } else {
        message = "No message sent";
    }
    request->send(200, "text/plain", "Hello, GET: " + message);
});

Я новичок в программировании веб-серверов на микроконтроллерах и был бы признателен за любую помощь:)

1 Ответ

0 голосов
/ 16 октября 2019

Если вы используете это: https://github.com/me-no-dev/ESPAsyncWebServer#request-variables, там действительно есть решение. Вам не нужно использовать имена, но вы можете проверить их, если это требуется. Проверьте раздел: GET, POST и FILE параметры .

int params = request->params();
for(int i=0;i<params;i++){
    AsyncWebParameter* p = request->getParam(i);
     ...
}
...