Страница 1 из 1

Разбор GET запроса

Добавлено: 03 окт 2018, 17:29
smol
Привет Всем!

Появилась необходимость принят переменную в контроллер в виде GET запроса
http://server/?переменная=значение
Возможно ли это?

Разбор GET запроса

Добавлено: 03 окт 2018, 18:45
Anydy
Конечно, посмотрите как идет отправка на различные сервисы....например народмон.ру thingspeak.com

Разбор GET запроса

Добавлено: 04 окт 2018, 14:48
smol
отправлять без проблем, а вот принять его ардуинкой?
http://arduino_IP/?переменная=значение

Разбор GET запроса

Добавлено: 04 окт 2018, 14:57
Sancho
[ref]smol[/ref], нашёл для Вас, может поможет, сам не пробовал...
[spoiler]

Код: Выделить всё

String currentLine = "";
  client.connect(server, 80);
  delay (50);
          if (client.connected())
          {
            while (client.available())
            {
              char inChar = client.read();
              currentLine += inChar;
              if (currentLine == "1")
              {
                 // выполнить ....
               }
              if(currentLine == "0")
              {
                   // выполнить ....
               }
            }
            client.stop();
          }
[/spoiler]

Разбор GET запроса

Добавлено: 04 окт 2018, 16:12
smol
Я делал такое, думал может блоки у кого есть для такой фишки.

А вот как я делал без FLPROG

[spoiler]

Код: Выделить всё

void loop()
{
  EthernetClient client = server.available();

  if (client)
  {

    // HTTP запрос заканчивается пустой строкой
    boolean currentLineIsBlank = true;
    boolean sentHeader = false;

    while (client.connected())
    {
      if (client.available())
      {
        char c = client.read();                                                                             

        if (receiving && c == ' ') receiving = false;                                                     
        if (c == '?') receiving = true;                        // Поиск аргументов переданных GET-запросом(аргументы после символа "?")

        // Обработка GET-запроса
        if (receiving)
        {
          // Если полученн аргумент 'L' - то управляем светодиодом
          if (c == 'L')
          {
            pin = client.parseInt();  
            digitalWrite(pin, !digitalRead(pin));                                                         
            break;
          }
          // Если получен аргумент 'S' - то управляем динамиком
          else if (c == 'S')
          {
           

          }
        }

        // Отправляем заголовок ответа и HTML-код
        if (!sentHeader)
        {
          // Отправляем стандартный заголовок ответа HTTP
          client.println("HTTP/1.1 200 OK");
          client.println("Content-Type: text/html\n");
          client.println("Refresh: 5");  // refresh the page automatically every 5 sec


          // Красная кнопка переключения
          client.println("<form action='' method='get'>");
          client.println("<input type='hidden' name='L' value='7' />");
          client.println("<input type='submit' value='Toggle Red' />");
          client.println("</form>");

          // Зеленая кнопка переключения
          client.println("<form action='' method='get'>");
          client.println("<input type='hidden' name='L' value='6' />");
          client.println("<input type='submit' value='Toggle Gre' />");
          client.println("</form>");

          // Синяя кнопка переключения
          client.println("<form action='' method='get'>");
          client.println("<input type='hidden' name='L' value='5' />");
          client.println("<input type='submit' value='Toggle Blu' />");
          client.println("</form>");

          sentHeader = true;
        }

        if (c == '\n' && currentLineIsBlank) break;

        if (c == '\n')
        {
          currentLineIsBlank = true;
        }
        else if (c != '\r')
        {
          currentLineIsBlank = false;
        }
      }
    }
    delay(5);                                                                                            
    client.stop();                                                                               
  }
}
[/spoiler]