Arduino NodeMCU POST не работает

у меня есть NodeMCU 1.0 с ESP-12E на нем и используя Arduino IDE для написания кода на нем.

Я хочу отправить POST сообщение удаленному php страница на моем веб-сервере, содержащая значения из моего модуля, но сначала мне нужно что-то отправить …

Я пробовал много разных примеров из разных источников и фрагментов кода, но ни один из них, похоже, не работает. Метод его отправки
GET метод работает, я могу получить данные со страниц PHP, но я не могу отправить их.

Мой код:

#include <ESP8266WiFi.h>
#include <ESP8266HTTPClient.h>
#include <WiFiClient.h>

const char* ssid     = "SomeWireless";
const char* password = "12345";

String server = "www.example.net"; // www.example.com

void setup() {
Serial.begin(115200);
delay(10);
// We start by connecting to a WiFi network
Serial.println();
Serial.println();
Serial.print("Connecting to ");
Serial.println(ssid);

WiFi.mode(WIFI_STA);
WiFi.begin(ssid, password);

while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}

Serial.println("");
Serial.println("WiFi connected");
Serial.println("IP address: ");
Serial.println(WiFi.localIP());

}

void loop() {
jsonPOST();
myPOST();
myGET();
}void myPOST() {
HTTPClient http;

http.begin("http://example.net/asd/recv.php");
http.addHeader("Content-Type", "application/x-www-form-urlencoded");
http.POST("title=foo");
http.writeToStream(&Serial);
http.end();

delay(1000);
}

void jsonPOST() {
WiFiClient client;

if (client.connect("example.net", 80)) {
Serial.println("Connected to server");
// Make the HTTP request
int value = 2.5;  // an arbitrary value for testing
String content = "{\"JSON_key\": " + String(value) + "}";
client.println("POST /asd/recv.php HTTP/1.1");
client.println("Host: example.net");
client.println("Accept: */*");
client.println("Content-Length: " + String(content.length()));
client.println("Content-Type: application/json");
client.println();
client.println(content);
}
delay(1000);
}

void myGET() {
if (WiFi.status() == WL_CONNECTED) { //Check     WiFi connection status
HTTPClient http;  //Declare an object of class HTTPClient
http.begin("http://www.exmaple.net/asd/btnCheck.php");  //Specify request destination
int httpCode = http.GET();  //Send the request

if (httpCode > 0) { //Check the returning code
String payload = http.getString();   //Get the request response payload
Serial.println(payload);                     //Print the response payload
}
http.end();   //Close connection
}
delay(1000);
}

Мой php:

$test = $_POST['title'];
echo $test;

//JSON
$json = file_get_contents('php://input');
$obj = json_decode($json);
echo $obj;

РЕДАКТИРОВАТЬ : Я хочу упомянуть, что веб-сервер может принимать сообщения POST, а также, что у меня есть учетная запись типа реселлера, поэтому я не имею полного контроля над сервером.

Любой совет по этому вопросу, оно того стоит. Я бился головой с этим, в течение 2 дней.
Спасибо!

0

Решение

ОТВЕТ:

Мне удается сделать запрос правильно. Проблема была в содержании моего поста.
Код, который работает для меня с ESP8266HTTPClient.h библиотека это:

void jPOST() {
HTTPClient http;

http.begin("http://example.net/asd/urlen.php");
http.addHeader("Content-Type", "application/x-www-form-urlencoded");
http.POST("{\"y\":6,\"x\":11}");
http.writeToStream(&Serial);
http.end();

delay(2000);
}

И для страницы php:

$req1 = file_get_contents("php://input");
$req2 = json_decode($req1);

$val= $req2 ->x;
echo $val;
//echo $req2 -> x;

mysqli_query($conn,"INSERT INTO tbl_ard(field1) VALUES($val)");
0

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector