Используя ESP8266 и используя следующие AT-команды, я могу успешно получить веб-страницу:
AT+CIPSTART="TCP","www.somewebsite.com",80
AT+CIPSEND=80
> GET http://www.somewebsite.com HTTP/1.0
<I get a bunch of HTML here>
Все идет нормально. Теперь у меня есть страница php на моем сайте, которая принимает несколько параметров и соответственно обновляет таблицу в базе данных. Поэтому, когда я печатаю:
http: //www.mywebsite.com/mypage.php? arg1 = один&арг2 = два
Успешно обновляет таблицу. Теперь, когда я пытаюсь использовать ESP8266, я получаю ошибку DNS:
AT+CIPSTART="TCP","http://www.mywebsite.com/mypage.php?arg1=one&arg2=two",80
<get DNS fail here>
Даже если я пробую страницу php без аргументов, я получаю ошибку DNS:
AT+CIPSTART="TCP","http://www.mywebsite.com/mypage.php",80
<get DNS fail here>
Кто-нибудь знает, что происходит? Может ли быть так, что страница php не находится на 80-м порту? И если это так, как мне узнать, на каком порту он работает?
Кстати, если я делаю то же самое со страницей HTML на моем сайте, это работает просто отлично.
РЕДАКТИРОВАТЬ:
Когда я пытаюсь это:
AT+CIPSTART="TCP","www.mywebsite.com",80
> GET /mypage.php?arg1=one,arg2=two
Я получаю этот вывод:
Ошибка 404 не найдено
И когда я пытаюсь:
AT+CIPSTART="TCP","www.mywebsite.com",80
> GET http://www.mywebsite.com/mypage.php?arg1=one,arg2=two
Я получаю HTML-код www.mywebsite.com/index.html, а не php-страницу.
Я также не уверен, что делает «HTTP / 1.0» в команде GET?
Вы не помещаете URL на AT+CIPSTART
строка, которая просто хочет имя сервера. Остальная часть URL идет после GET
, Кроме того, если ваш сервер делает виртуальный хостинг, вам необходимо отправить Host:
заголовок, чтобы сказать, какое имя сервера использовать.
AT+CIPSTART="TCP","www.mywebsite.com",80
> GET /mypage.php?arg1=one&arg2=two HTTP/1.1
> Host: www.mywebsite.com
Других решений пока нет …