К сайту, к примеру, http://arduino.ru, подключение происходит, получаю текст страницы, а к своему локальному сайту подключиться не могу, получаю следующее сообщение:
Zagruzka
192.168.1.56connecting...
connected
HTTP/1.1 400 Bad Request
Date: Tue, 12 May 2020 18:10:32 GMT
Server: Apache
Vary: accept-language,accept-charset
Accept-Ranges: bytes
Connection: close
Content-Type: text/html; charset=utf-8
Content-Language: en
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
<head>
<title>Bad request!</title>
<link rev="made" href="mailto:%5bno%20address%20given%5d" />
<style type="text/css"><!--/*--><![CDATA[/*><!--*/
body { color: #000000; background-color: #FFFFFF; }
a:link { color: #0000CC; }
p, address {margin-left: 3em;}
span {font-size: smaller;}
/*]]>*/--></style>
</head>
<body>
<h1>Bad request!</h1>
<p>
Your browser (or proxy) sent a request that
this server could not understand.
</p>
<p>
If you think this is a server error, please contact
the <a href="mailto:%5bno%20address%20given%5d">webmaster</a>.
</p>
<h2>Error 400</h2>
<address>
<a href="/">default</a><br />
<span>Apache</span>
</address>
</body>
</html>
disconnecting.
Тогда в монитор порта будет сыпаться disconnecting. disconnecting. disconnecting.
Далее у меня опять загвоздка. Нужно распарсить полученный ответ, соответственно мне нужно получить ответ в переменную типа String (с ним мне работать просто).
if (client.available()) {
char inChar = (char)client.read();
inString += inChar;
if (inChar == '#') {
Serial.print(inString);
inString="";
}
}
К примеру, я могу в конце своего ответа поставить символ #, тогла всё просто, но как то это извращенно, как мне кажется.
А чем разделители и ограничители типа # Вам не нравятся. Посмотрите любую поисковую строку в интернет-магазине - сплошные разделители (%/=&). Делайте так, как Вам удобнее и быстрее и это будет самое эффективное.
В визнете вы получаете из Client.read() весь payload. Т.е. весь HTTP пакет от GET до конца. Парсинг этого пэйлоада - задача не для слабонервных. Она, конечно, решена миллионы раз, но каждый программист это делал для себя и наврядли выкладывал в интернет.
Исходя из общего принципа - вам необходимо искать строку, следующую за GET и оканчивающуюся пробелом (в самом URI пробелы не встречаются). Затем бить на части по токенам `?` и `&` её. Human readable strings парсить, увы, не сахар.
К сайту, к примеру, http://arduino.ru, подключение происходит, получаю текст страницы, а к своему локальному сайту подключиться не могу, получаю следующее сообщение:
В чём дело?
if (client.connect(server, 80)) { Serial.println("connected"); // "соединение установлено" client.println("GET /index.php HTTP/1.1"); client.println("Host: 192.168.1.33"); client.println("Connection: close"); client.println(); client.println(); } else { Serial.println("connection failed"); // "подключение не удалось" } }Разобралась
if (!client.connected()) { Serial.println(); Serial.println("disconnecting."); // "отключение." client.stop(); for(;;) ; } }Для чего
for(;;) ; }Я б выкинул цикл этот.
Тогда в монитор порта будет сыпаться disconnecting. disconnecting. disconnecting.
Далее у меня опять загвоздка. Нужно распарсить полученный ответ, соответственно мне нужно получить ответ в переменную типа String (с ним мне работать просто).
if (client.available()) { char inChar = (char)client.read(); inString += inChar; if (inChar == '#') { Serial.print(inString); inString=""; } }К примеру, я могу в конце своего ответа поставить символ #, тогла всё просто, но как то это извращенно, как мне кажется.
Ставь символ перевода каретки «\n»
А чем разделители и ограничители типа # Вам не нравятся. Посмотрите любую поисковую строку в интернет-магазине - сплошные разделители (%/=&). Делайте так, как Вам удобнее и быстрее и это будет самое эффективное.
Большое спасибо.
В визнете вы получаете из Client.read() весь payload. Т.е. весь HTTP пакет от GET до конца. Парсинг этого пэйлоада - задача не для слабонервных. Она, конечно, решена миллионы раз, но каждый программист это делал для себя и наврядли выкладывал в интернет.
Исходя из общего принципа - вам необходимо искать строку, следующую за GET и оканчивающуюся пробелом (в самом URI пробелы не встречаются). Затем бить на части по токенам `?` и `&` её. Human readable strings парсить, увы, не сахар.