Ethernet Shield

Pashsh
Offline
Зарегистрирован: 05.09.2012

Здравствуйте все!

Такой вот вопрос, как с помощью этой платы отправлять POST данные на сайт и считывать данные с него? Спасибо.

AlexFisher
AlexFisher аватар
Offline
Зарегистрирован: 20.12.2011

Все, в принципе, есть в примере. ПОСТ - придется формировать "ручками", данные считывать просто - получил текст - парсишь. Лучше, чтобы сайт для дуины спец-страницу отправлял с заранее известным форматом, тогда данные извлекать удобнее, не надо их искать, сразу читаешь с определенного места. 

leshak
Offline
Зарегистрирован: 29.09.2011

По большому счету ваш вопрос вообще не относится к Ардуине и шилду. Задача шилда - отправить текстовую строчку которую вы ему дали.

Если  эта текстовая строка соответсвует формату GET запроса - получается GET запрос, если в ней лежит POST запрос - ну вы поняли.

Что-бы понять что же именно должно быть в этих строках должно быть обязатель/опционально  требуется либо почитать спецификацию HTTP протокола, либо поставить fiddler2, подергать какой-нибудь сайт и посмотреть как выглядят запросы которые шлет браузер, и как выглядят ответы (в конечном итоге вам нужно "изобразить из себя браузер").

AlexFisher пишет:

 Лучше, чтобы сайт для дуины спец-страницу отправлял с заранее известным форматом, тогда данные извлекать удобнее, не надо их искать, сразу читаешь с определенного места. 

Совершенно верно. Распарсить настояющую тяжелую страницу с дизайном - у ардуины может банально не хватить сил (памяти). Да и самому парсить html на C++ - повесится можно.

Я делал так: на сервере смотрел заголовок Accept. Если там ничего нет - отдавал данные в виде XML (удобно браузером смотреть), если "application/jsonrequest" - отдавал в виде json (значит из javascript-та данные запросили), если "application/arduino" - отдавал данные в виде "var1=value1,var2=value2,var3=value3". Что как-бы проще всего парсить на ардуине.

Ну а, со стороны ардуины, ествесвенно, к каждому запросу добвлял заголовок "accept: application/adruino"

У меня данные были простые - мне этого хватало. Если нужно будет передавать какие-то сложные структуры данных, то, наверное пошел-бы по пути запрашивать ардуиной не "application/arduino", а "application/jsonrequest". Ну и потом парсил-бы JSON на ардуине (вроде где-то видел готовые либы для этого).