Ethernet Client не хочет работать с URL

Тема в разделе "Arduino & Shields", создана пользователем 5diezov, 10 янв 2019.

  1. 5diezov

    5diezov Нерд

    Задача:

    Ложить данные в базу данных на сервере, передача идет методом get.

    Но дело в том что на домашнем сервере все работает замечательно, обращение к серверу по ip,

    И вручную, типа: http://192.168.10.21/get.php?data1ard=1.00&data2ard=2.00&data3ard=3.00

    И ардуина нормально подключается, и передает данные.

    К удаленному серверу доступ только по URL

    Вручную все работает: http://site.com.ua/get.php?data1ard=1.00&data2ard=2.00&data3ard=3.00

    А ардуино ни как не может достучаться.

    В чем может быть проблемы?
    Код (C++):
    #include <Ethernet.h>
    float a=1, b=2, c=3;
    String msg = "GET /get.php?data1ard="+ String(a) + "&data2ard="+String(b) + "&data3ard="+String(c);

    byte mac[] = { 0x00, 0xAA, 0xBB, 0xCC, 0xDE, 0x02 };
    IPAddress ip(192, 168, 10, 22);
    byte server[] = { 192, 168, 10, 21 };
    //char server[] = "www.site.com.ua";

    void setup()
    {
    }

    void loop()
    {
    EthernetClient client;
      Ethernet.begin(mac, ip);
        delay(1000);
          client.connect(server, 80);
          client.println(msg);
          client.println(" HTTP/1.1");
          client.println("Connection: close");
          client.println();
          client.println();
        delay (2000);  
    client.stop();  
    }

     
     
  2. dns кто будет прописывать? Не знает шилд, как доменное имя преобразовать в IP
     
  3. 5diezov

    5diezov Нерд

    Пытаюсь прописать, ругается при компиляции:
    Код (C++):
    #include <Ethernet.h>
    float a=1, b=2, c=3;
    String msg = "GET /get.php?data1ard="+ String(a) + "&data2ard="+String(b) + "&data3ard="+String(c);

    byte mac[] = { 0x00, 0xAA, 0xBB, 0xCC, 0xDE, 0x02 };
    IPAddress ip(192, 168, 10, 22);
    IPAddress dnServer(8. 8. 8. 8);
    IPAddress gateway(192, 168, 10, 1);



    byte server[] = { 192, 168, 10, 21 };
    //char server[] = "www.site.com.ua";

    void setup()
    {
       Ethernet.begin(mac, ip, dnServer, gateway);
    }

    void loop()
    {
    EthernetClient client;
        delay(1000);
          client.connect(server, 80);
          client.println(msg);
          client.println(" HTTP/1.1");
          client.println("Connection: close");
          client.println();
          client.println();
        delay (2000);
    client.stop();
    }
    Код (C++):

    get:7:23: error: expected ')' before numeric constant

    IPAddress dnServer(8. 8. 8. 8 );

                           ^

    exit status 1
    expected ')' before numeric constant

     
     
    Последнее редактирование: 10 янв 2019
  4. Ну запятые же, а не точки. Неужели не бросается в глаза разница с соседними строками.
     
    arkadyf нравится это.
  5. 5diezov

    5diezov Нерд

    Упс, поправил, но проблема оказалась вовсе не в этом, днс не при чем.
    Нужно указывать хост после запроса:
    было:
    Код (C++):
          client.connect(server, 80);
          client.println(msg);
          client.println(" HTTP/1.1");
          client.println("Connection: close");
          client.println();
          client.println();
    стало:
    Код (C++):
            client.print("GET ");
            client.print(msg);
            client.println(" HTTP/1.1");
            client.println("Host: www.сайт.com.ua");
            client.println("");
            client.println("Connection: close");