Как организовать POST запрос на сайт.
- Войдите на сайт для отправки комментариев
Ср, 26/06/2013 - 12:10
Добрый день. Подскажите пожалуйста каким образом можно в arduino организовать такой POST запрос:
void loop() {
Как это заставить работать?:
POST http://vasja.ru/post.php
name=vasja
pass=123
delay(4000);
}
buf отправляется на порт целевого сервера по TCP соединению.
Или просто использовать функции из библиотек.
Расскажите пожалуйста подробней. На данном этапе ругается на:
Из этого
Попробуйте, либо убрать звездочку
Либо убрать квадратные скобки
Вообще что-бы это получился либо указатель на char, либо массив чаров (который суть тот же самый указатель на char).
А то так вышло "массив указателей на char", ну а массив, раз ему не указанна длина, нужно инициализировать (о чем ошибка вам и сказала).
string - текстовые строки | Аппаратная платформа Arduino
Вот как раз "пример" там и есть то что вас получилось.
int buf; int tring_var; int toCharArray; *** void loop() { const char* httpPost[] PROGMEM = {"POST %s HTTP/1.0\r\n", "From: MyForm\r\n", "User-Agent: HTTPTool/1.0\r\n", "Content-Type: application/x-www-form-urlencoded\r\n", "Content-Length: %d\r\n", "\r\n", "%s\r\n"}; String String_var = "name=vasj&apass=123"; sprintf(buf, httpPost, "/post.php", String_var.length(), tring_var.toCharArray());Теперь ругается на перменные:
Хотя выше я им задал int, так же пробовал long, безрезультатно.
В верху подключены:
А это что вообще такое?
Непонятная строка и переменные - значит инициализирую переменные с непонятными именами... такая ваша логика?
char buf [100]; const char httpPost[] PROGMEM = "POST %s HTTP/1.0\r\n" "From: MyForm\r\n" "User-Agent: HTTPTool/1.0\r\n" "Content-Type: application/x-www-form-urlencoded\r\n" "Content-Length: %d\r\n" "\r\n" "%s\r\n"; char String_var[] = "name=vasj&apass=123"; sprintf(buf, httpPost, "/post.php", strlen(String_var), String_var);Продвинутый вариант:
#include <SPI.h> #include <Ethernet.h> byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED }; char server[] = "vasja.ru"; const char httpPost[] PROGMEM = "POST %s HTTP/1.0\r\n" "From: MyForm\r\n" "User-Agent: HTTPTool/1.0\r\n" "Content-Type: application/x-www-form-urlencoded\r\n" "Content-Length: %d\r\n" "\r\n" "%s\r\n"; IPAddress ip(192,168,0,177); EthernetClient client; void setup() { Serial.begin(9600); if (Ethernet.begin(mac) == 0) { Serial.println("Failed to configure Ethernet using DHCP"); Ethernet.begin(mac, ip); } delay(1000); Serial.println("connecting..."); if (client.connect(server, 80)) { Serial.println("connected"); char buf[255]; sprintf(buf, httpPost, "/post.php", 19, "name=vasj&apass=123"); client.print(buf); } else { Serial.println("connection failed"); } } void loop() { if (client.available()) { char c = client.read(); Serial.print(c); } if (!client.connected()) { Serial.println(); Serial.println("disconnecting."); client.stop(); while(true); } }Вообще предполагалось что нужно показать пример запроса POST, иначе вам сюда
А этот совсем для идиотов:
#include <SPI.h> #include <Ethernet.h> byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED }; char server[] = "vasja.ru"; IPAddress ip(192,168,0,177); EthernetClient client; void setup() { Serial.begin(9600); if (Ethernet.begin(mac) == 0) { Serial.println("Failed to configure Ethernet using DHCP"); Ethernet.begin(mac, ip); } delay(1000); Serial.println("connecting..."); if (client.connect(server, 80)) { Serial.println("connected"); client.println("POST /post.php HTTP/1.0"); client.println("From: MyForm"); client.println("User-Agent: HTTPTool/1.0"); client.println("Content-Type: application/x-www-form-urlencoded"); client.println("Content-Length: 19"); client.println(""); client.println("name=vasj&apass=123"); } else { Serial.println("connection failed"); } } void loop() { if (client.available()) { char c = client.read(); Serial.print(c); } if (!client.connected()) { Serial.println(); Serial.println("disconnecting."); client.stop(); while(true); } }Программирование для домохозяек?
Я новичок в среде программирования arduino uno и ENC28J60 плата. Возможно ли организовать спомощью них POST запрос,если да то подскажите пожалуйста как. В google и ya нету ничего толкового. Особенно про библиотеку EtherCard.h