Помогите пожалуйста с client.println
- Войдите на сайт для отправки комментариев
Чт, 09/05/2019 - 13:22
Всем привет. Народ, помогите плз с кодом, кто в теме. Не работает POST.
Arduino Uno + Ethernet Shield w5100
Вот строка, которая правильно работает в терминале на компе:
curl -d "token=123456" https://crm.internal.***.ru/api/v1/okGateReader/inductionLoop
Пытаюсь изобразить это на Ардуино, но не работает:
client.println("POST api/v1/okGateReader/inductionLoop HTTP/1.1");
client.println("Host: https://crm.internal.***.ru");
client.println("User-Agent: Arduino/1.0");
client.print("token=");
client.print("123456");
client.println("Connection: close");
client.println();
Где накосячил? Вот полный скетч:
#include <Ethernet.h>
#include <SPI.h>
int switchPin = 8;
int m = 8;
// MAC-адрес:
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xEA };
EthernetClient client;
void setup()
{
// Serial.begin(115200);
Serial.begin(9600);
Serial.println("Starting...");
// Ethernet.begin(mac);
// pinMode(switchPin, INPUT);
// start the Ethernet connection:
if (Ethernet.begin(mac) == 0) {
Serial.println("Failed to configure Ethernet using DHCP");
}else{
Serial.print("IP: ");
Serial.println(Ethernet.localIP());
}
char server[] = "crm.internal.***.com";
if (client.connect(server, 443)) {
Serial.println("connected");
// Make a HTTP request:
// String query = "POST api/v1/okGateReader/inductionLoop HTTP/1.1";
// client.println(query);
client.println("POST api/v1/okGateReader/inductionLoop HTTP/1.1");
client.println("Host: https://crm.internal.***.com");
client.println("User-Agent: Arduino/1.0");
client.print("token=");
client.print("12345");
client.println("Connection: close");
client.println();
Serial.println("запрос отправлен");
}
else {
Serial.println("port 443 connection failed");
}
}
// }
void loop() {
// put your main code here, to run repeatedly:
}
Сорри, не думал, что форум воспримет тестовые адреса Host как ссылки и обренёт их в теги :) А редактировать пост нет прав.
Port 443 - HTTPS, в его случае обычный plain text protocol никак не работает.
Заголовок 'Host:' построен не верно, должен содержать имя хоста [опционально номер порта] запрашиваемого ресурса (рфц 2616 раздел 14.23)
После заголовка 'User-Agent:' какой то треш начинается. Не заголовок а непонятно что 'token=12345Connection: close'
Вы приводите пример с curl, который пОстит запрос с данными, содержащими токен, сами пытаетесь выполнить пустой пост, без данных, только заголовки.
Спасибо всем. А сможете написать этот кусок кода, как надо? Не программист я, к сожалению. Простые команды осилил, а вот такое для меня уже запредельно :(
А сможете написать этот кусок кода, как надо?
Запостите эту просьбу в разделе Ищу исполнителя
@vitvit, Мне нравится ход ваших мыслей, сначала просим найти ошибки.
А после просим написать код.
Не-не, вы меня не правильно поняли, я думал, что должно вот так заработать и я просто где-то что-то пропустил. Пойду в раздел Ищу исполнителя, так проще будет :)