#1 2016-03-12 11:52:56

robotics
Учасник
Зареєстрований: 2016-03-12
Повідомлень: 3

КАК СДЕЛАТЬ POST запрос на сервер?

Есть ардуино УНО , 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)

Неактивний

#2 2016-03-12 23:01:58

Nefreemen
Учасник
З Киев
Зареєстрований: 2015-12-19
Повідомлень: 716

Re: КАК СДЕЛАТЬ POST запрос на сервер?

Запрос POST или GET формирует WEB страница, или его можно явно прописать в адресной строке после адреса в браузере.

Неактивний

#3 2016-03-14 00:19:17

Lic Control
Учасник
Зареєстрований: 2016-01-23
Повідомлень: 124

Re: КАК СДЕЛАТЬ POST запрос на сервер?

А посмотрите мой пример
http://forum.arduino.ua/viewtopic.php?id=415
Там похоже есть ответ на ваш вопрос.

Неактивний

#4 2016-03-14 04:10:14

meliorator
Учасник
Зареєстрований: 2016-03-10
Повідомлень: 7

Re: КАК СДЕЛАТЬ POST запрос на сервер?

Если вы хотите передавать данные на сервер и ждать от него ответа на эти данные, то думаю, это лучше делать 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)

Неактивний

#5 2016-03-14 11:40:43

robotics
Учасник
Зареєстрований: 2016-03-12
Повідомлень: 3

Re: КАК СДЕЛАТЬ POST запрос на сервер?

Спасибо за ответы буду пробовать.
пока еще модуль не пришел ( пробую на протеусе тестировать.
Скажите еще а я библиотеку правильную юзаю? или другую нужно.
Я не знаю правильно ли протеус симулирует или нет но он даже не заходит в функцию void, залипает где то, если 13 ногу отключаю то начинает заходить в воид

Неактивний

#6 2016-03-14 15:01:29

meliorator
Учасник
Зареєстрований: 2016-03-10
Повідомлень: 7

Re: КАК СДЕЛАТЬ POST запрос на сервер?

За протеус ничего не скажу, не пробовал. У меня шилд на чипе w5100. Принципиальная разница в чипах: w5100 имеет аппаратную реализацию tcp/ip, стандартную библиотеку входящую в состав среды arduino. Enc28j60 реализует протоколы через библиотеки, которые нужно устанавливать дополнительно. Я Enc28j60 никогда не использовал, потому ничего дельного по нему сказать не могу.

Неактивний

#7 2016-03-18 12:44:12

robotics
Учасник
Зареєстрований: 2016-03-12
Повідомлень: 3

Re: КАК СДЕЛАТЬ POST запрос на сервер?

( не пойму какую библиотеку юзать
Может кто то всё таки поможет?)

Неактивний

#8 2016-11-19 03:37:52

fratl
Учасник
Зареєстрований: 2016-11-13
Повідомлень: 10

Re: КАК СДЕЛАТЬ POST запрос на сервер?

Так же интересует вопрос с отправкой POST запросов Ардуиной в одностороннем порядке на заданный сервер.

Arduino Uno + Enc28j60
библеотека ethercard

Подскажите как правильно написать POST запрос используя библиотеку ethercard
спасибо

Неактивний

Швидке повідомлення

Введіть повідомлення і натисніть Надіслати

Підвал форуму