Как отправить почтовый запрос 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.... появляется строка.

, 👍0

Обсуждение

Вы не подключаетесь к локальному хосту. Вы подключаетесь к другому устройству в той же сети. С точки зрения Arduino Yun, localhost снова будет Arduino Yun., @gre_gor

Ваш код Arduino работает, и ваш HTTP-запрос обрабатывается на сервере. Я не знаю, где и что вы ожидаете увидеть на сервере, но сейчас это выглядит не в рамках Arduino и этого сайта SE., @gre_gor

о да мой плохой, я ценю вашу помощь! Спасибо за ответ, @Ralph

Я голосую за то, чтобы закрыть этот оставленный вопрос как не по теме, потому что проблема, по-видимому, связана с неправильными представлениями о сети, а не об Arduino, и точная проблема, которую необходимо решить, никогда не была сформулирована достаточно точно, чтобы получить *ответственный* вопрос., @Chris Stratton

Я голосую за то, чтобы закрыть этот оставленный вопрос как не по теме, потому что проблема, по-видимому, связана с неправильными представлениями о сети, а не об Arduino, и точная проблема, которую необходимо решить, никогда не была сформулирована достаточно точно, чтобы получить ответ на вопрос., @Chris Stratton


1 ответ


1

Между заголовками HTTP и данными должна быть пустая строка.

Вы должны закончить строку заголовка Content-Length с помощью

client.println(data.length());

чтобы client.println(); вставлял пустую строку.

,

Это все еще не решило мою проблему, я обновил свой пост, пожалуйста, проверьте его, если у вас есть время, @Ralph