Ви не увійшли.
Сторінки 1
Есть ардуино УНО , enc28j60
Не могу разобраться как POST запросом отправить на сервер инфу формата data="QWER";
Вот код который есть но вряд ли он рабочий
#include <Ethernet.h>
byte mac[]={0x0B,0xCB,0x44,0x3D,0x75,0xF1};
IPAddress ip(192, 168, 0, 177);
EthernetClient client;
String data;
void setup(){
Serial.begin(9600);
if(Ethernet.begin(mac)==0){
Serial.println("Faied configure");
data="";
}
}
void loop(){
data="qq";
Serial.println("qwer");
if(client.connect("www.duino.testv1....com",80)){//сервер
Serial.println("Connect");
client.println("POST/ inputpost.php HTTP/1.1");
client.println("Host:duino.testv1.....com");//сервер
client.println("Content-Type: application/x-www-form-urlencoded");
client.println("Content-Length: ");
client.println(data.length());
client.println();
client.println("username=");
client.println(data);
}
if(client.connected()){
Serial.println("stop");
client.stop();
}
delay(3000);
}
Нужно и ловить ответ от сервера
Симулировал в протеусе поннимаю что это не то но видно сразу что не заходит в void loop() почему то даже.
Кароче я хз как это делать(((
Пожалуйста помогите
Остання редакція robotics (2016-03-12 11:53:26)
Неактивний
А посмотрите мой пример
http://forum.arduino.ua/viewtopic.php?id=415
Там похоже есть ответ на ваш вопрос.
Неактивний
Если вы хотите передавать данные на сервер и ждать от него ответа на эти данные, то думаю, это лучше делать GET. В сообщении Lic Control там есть хороший пример, как это делать. Если же вы уверенны, что вам нужен POST то вот функция, я юзаю у себя в проекте для POST запросов
void saveHistory(String data, String url) {
if (clientCommon.connect(computerHost, 80)) {
clientCommon.println("POST " + url + "&arduino=1 HTTP/1.1");
clientCommon.println("Host: " + ipStr);
clientCommon.println("Content-Type: application/x-www-form-urlencoded");
clientCommon.println("User-Agent: arduino-ethernet");
clientCommon.println("Connection: close");
clientCommon.print("Content-Length: ");
clientCommon.println(data.length());
clientCommon.println();
clientCommon.print(data);
clientCommon.println();
clientCommon.stop();
}
}
Внешние переменные computerHost, url, ipStr Вот их определения
computerHost можно или как тип IPAddress
IPAddress computerHost(192, 168, 100, 111);
или как си-строку
char computerHost[] = "piroliz.loc";
url это тип String, установить можно так
String url = "/piroliz/web/index.php?q=flippers"
ну и ipStr имеет тип String. Можно задать так
String ipStr = "piroliz.loc";
Обратите внимание на совпадение значений ipStr и computerHost, в случае если computerHost си-строка. В этих переменных пишется имя сервера, на который вы шлете запросы. Но если у вас в сети нету никакого dns маскарадинга или вообще какого-то резолва имени на ip адрес, то computerHost нужно задать как IPAddress. В то же время в ipStr всегда содержится имя компа.
Остання редакція meliorator (2016-03-14 04:23:55)
Неактивний
Спасибо за ответы буду пробовать.
пока еще модуль не пришел ( пробую на протеусе тестировать.
Скажите еще а я библиотеку правильную юзаю? или другую нужно.
Я не знаю правильно ли протеус симулирует или нет но он даже не заходит в функцию void, залипает где то, если 13 ногу отключаю то начинает заходить в воид
Неактивний
За протеус ничего не скажу, не пробовал. У меня шилд на чипе w5100. Принципиальная разница в чипах: w5100 имеет аппаратную реализацию tcp/ip, стандартную библиотеку входящую в состав среды arduino. Enc28j60 реализует протоколы через библиотеки, которые нужно устанавливать дополнительно. Я Enc28j60 никогда не использовал, потому ничего дельного по нему сказать не могу.
Неактивний
Так же интересует вопрос с отправкой POST запросов Ардуиной в одностороннем порядке на заданный сервер.
Arduino Uno + Enc28j60
библеотека ethercard
Подскажите как правильно написать POST запрос используя библиотеку ethercard
спасибо
Неактивний
Сторінки 1