Помогите разграничить и прочитать конкретное содержимое входящей строки HTTP

Я отправляю строки на Esp8266 через веб-браузер.

Приведенный ниже код возвращает следующее в последовательном мониторе, если я отправляю в браузере:

Отправить из браузера на esp8266 — http://192.168.1.220/s1s2s3s4s5d1
Получить в последовательном мониторе Arduino — GET /s1s2s3s4s5d2 HTTP/1.1

Как прочитать только содержимое s1s2s3s4s5d1? Это содержимое может быть разной длины, числа могут быть двузначными, но между ними останутся буквы алфавита.

Обратите внимание, что я все еще новичок.

// Читаем первую строку запроса
String request = client.readStringUntil('\r');
Serial.println(request);
client.flush();

, 👍1

Обсуждение

google строки разбора arduino, @jsotola

Спасибо, я безуспешно пытался реализовать некоторые методы. у меня просто нет опыта, тем более, что требуемый контент различается по длине. Я надеялся получить пример, если это возможно., @S B

у вас есть какой-либо контроль над форматом URL-адреса .... может быть, вам нужно использовать что-то вроде http://192.168.1.220?s=1&s2=4&s3=8&d=1&abcd=1234, @jsotola

сохранит ли этот метод буквы или разделит на цифры?, @S B


2 ответа


1

У меня есть это

if (client.connected()) {
  if (client.available() && client.find(' ')) { // ПОЛУЧИТЬ /fn HTTP/1.1
    char fn[20];
    int l = client.readBytesUntil(' ', fn, sizeof(fn));
    fn[l] = 0;
    while (client.read() != -1);
    Serial.println(fn);
    client.stop(); 
  }
}
,

Спасибо, применю решение и вернусь., @S B

@sb, помогло?, @Juraj


0

вы можете попробовать что-то подобное

int first_space = request.indexOf(' '); // расположение первого пробела
int second_space = request.indexOf(' ', first_space); // следующий пробел после первого

String query_arg = request.substring(first_space,second_space);
,