Как отправить почтовый запрос Arduino Yun на локальный хост?
Я пытался отправить данные с моего Arduino Yun на локальный сервер с помощью XAMPP. Мой код показан ниже. В последовательном мониторе Arduino Yun отображается соединение и печатается строка данных, но на сервере ничего не отображается. Я не знаю, что случилось. Может быть, это не работает на локальном хосте? Будем признательны за любую помощь.
Я обновил код Arduino, который нашел здесь.
send_data_ws.ino
#include <Bridge.h>
#include <Console.h>
#include <FileIO.h>
#include <HttpClient.h>
#include <Mailbox.h>
#include <Process.h>
#include <YunClient.h>
IPAddress server(192,168,1,200);
YunClient client;
String parametri="";
int x1,x2,x3;
void setup() {
Bridge.begin();
Serial.begin(9600);
pinMode(A0,INPUT);
pinMode(A1,INPUT);
pinMode(A2,INPUT);
String parametri ="";
delay(2500);
Serial.println("connecting...");
x1 = analogRead(A0);
x2 = analogRead(A1);
x3 = analogRead(A2);
if (client.connect(server, 80)) {
Serial.println("connected");
delay(2500);
parametri="x1="+String(x1)+"&x2="+String(x2)+"&x3="+String(x3);
client.println("POST /arduino/index.php HTTP/1.1");
client.print("Content-length:");
client.println(parametri.length());
Serial.println(parametri.length());
Serial.println(parametri);
client.println("Connection: Close");
client.println("Host:192.168.1.200");
client.println("Content-Type: application/x-www-form-urlencoded");
client.println();
client.println(parametri);
} 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();
for(;;);
}
}
index.php
<?php
echo 'running....';
if ($_SERVER["REQUEST_METHOD"] == "POST"){
$x1 = $_POST['x1'];
$y1 = $_POST['x2'];
$z1 = $_POST['x3'];
echo 'x1: ' . $x1 . '<br>x2: ' . $x2 . '<br>x3:' . $x3 . '<br>';
}
?>
Последовательный монитор показывает код PHP с помощью client.read()
, и, как вы можете видеть, он отображает данные, которые я отправил в файл PHP, но на моем сервере ничего не отображается, только running....
появляется строка.
@Ralph, 👍0
Обсуждение1 ответ
Между заголовками HTTP и данными должна быть пустая строка.
Вы должны закончить строку заголовка Content-Length
с помощью
client.println(data.length());
чтобы client.println();
вставлял пустую строку.
Это все еще не решило мою проблему, я обновил свой пост, пожалуйста, проверьте его, если у вас есть время, @Ralph
- HTTP POST от Arduino/ESP8266/ESP32 Как отправлять параметры (x-www-form-urlencoded)
- ESP8266 не отвечает через случайные промежутки времени
- esp32 http client response только 200 не получил данные после этого
- Ошибка соединения Arduino Firebase с отказом
- Выполнение HTTPS-запросов с использованием команд ESP8266 AT
- Метод HTTP PUT на NodeMCU/ESP8266
- Ответ с помощью HTML-страницы на сервере HTTP с использованием esp01 и ArduinoIDE
- Чтение и запись в JSON-файл с Arduino?
Вы не подключаетесь к локальному хосту. Вы подключаетесь к другому устройству в той же сети. С точки зрения Arduino Yun, localhost снова будет Arduino Yun., @gre_gor
Ваш код Arduino работает, и ваш HTTP-запрос обрабатывается на сервере. Я не знаю, где и что вы ожидаете увидеть на сервере, но сейчас это выглядит не в рамках Arduino и этого сайта SE., @gre_gor
о да мой плохой, я ценю вашу помощь! Спасибо за ответ, @Ralph
Я голосую за то, чтобы закрыть этот оставленный вопрос как не по теме, потому что проблема, по-видимому, связана с неправильными представлениями о сети, а не об Arduino, и точная проблема, которую необходимо решить, никогда не была сформулирована достаточно точно, чтобы получить *ответственный* вопрос., @Chris Stratton
Я голосую за то, чтобы закрыть этот оставленный вопрос как не по теме, потому что проблема, по-видимому, связана с неправильными представлениями о сети, а не об Arduino, и точная проблема, которую необходимо решить, никогда не была сформулирована достаточно точно, чтобы получить ответ на вопрос., @Chris Stratton