2

POSTセットアップした MySQL データベースにリクエストを送信しようとしています。さまざまなチュートリアルを試しましたが、役に立ちませんでした。作成した PHPPOSTページを使用して、次のようにブラウザーからデータを入力できます。

<?php
//post.php
include 'connect.php';
var_dump($_GET);
$id = $_GET['id'];
$value = $_GET['value'];
$id = mysql_real_escape_string($id);
$value = mysql_real_escape_string($value);

mysql_query(
"INSERT INTO iot (value, id) VALUES ('$value', '$id');"
)
?>

私は最初に自分の PHP サイトにアクセスして、次のPOSTような温度と露点でリクエストを送信しようとしていました。

//tempandhumidity2
#include <ESP8266WiFi.h>
#include <ESP8266HTTPClient.h>
#include "SimpleDHT.h"

SimpleDHT11 dht11;
const char* ssid = "nameofssid";
const char* password = "password";

int ledPin = 2; // GPIO2

void setup() {

Serial.begin(115200);                //Serial connection
WiFi.begin(ssid, password);   //WiFi connection

while (WiFi.status() != WL_CONNECTED) {  //Wait for the WiFI connection completion
  delay(500);
  Serial.println("Waiting for connection");
  }
Serial.println();
Serial.println();
Serial.print("Connecting to ");
Serial.println(ssid);
Serial.print("Use this URL to connect: ");
Serial.print("http://");
Serial.print(WiFi.localIP());
Serial.println("/");
}

void loop() {
HTTPClient http;
http.begin("http://192.168.43.162/iot/post.php");
http.addHeader("Content-Type", "application/x-www-form-urlencoded");
int httpCode = http.POST("id=12&value=35");
Serial.println(httpCode);
if(httpCode == HTTP_CODE_OK)
{
   Serial.print("HTTP response code ");
   Serial.println(httpCode);
   String response = http.getString();
   Serial.println(response);
}
else
{
   Serial.println("Error in HTTP request");
}

http.end();
} 

これは以下を返します:

Waiting for connection
Waiting for connection
Waiting for connection
Waiting for connection
Waiting for connection


Connecting to nameofssid
Use this URL to connect: http://192.168.43.176/
200
HTTP response code 200
Connected successfullyarray(0) {
}
<br />
<b>Notice</b>:  Undefined index: id in <b>C:\xampp\htdocs\iot\post.php</b> on line <b>4</b><br />
<br />
<b>Notice</b>:  Undefined index: value in <b>C:\xampp\htdocs\iot\post.php</b> on line <b>5</b><br />

リターンでウェブブラウザを使用するhttp://10.0.0.90/iot/post.php?id=14&value=33

Connected successfullyarray(2) { ["id"]=> string(2) "14" ["value"]=> string(2) "33" }

GETここで外部サイトにアクセスできるかどうかを確認するためだけに、リクエストを実行してみました。

//tempandhumidity4
#include <ESP8266WiFi.h>
#include <ESP8266HTTPClient.h>


const char *SERVER_WIFI_SSID = "nameofssid";
const char *SERVER_WIFI_PASS = "password";

void setup()
{
  Serial.begin(115200); 
  Serial.println("");
  Serial.println("Connecting to WiFi ");
  WiFi.begin(SERVER_WIFI_SSID,SERVER_WIFI_PASS);
  while(WiFi.status() != WL_CONNECTED){
     delay(500);
     Serial.print(".");
   }

   Serial.println("Connected");
}
void loop(){
HTTPClient http;
http.begin("http://www.nfl.com");
int httpCode = http.GET();
Serial.println(httpCode);
if(httpCode == HTTP_CODE_OK)
{
   Serial.print("HTTP response code ");
   Serial.println(httpCode);
   String response = http.getString();
   Serial.println(response);
}
else
{
   Serial.println("Error in HTTP request");
}

http.end();
} 

これは以下を返します。

Connecting to WiFi 
.........Connected
400
Error in HTTP request
400

アイデアや提案をいただければ幸いです。問題は、ESP8266 を自分の電話にテザリングし、要求を実行しようとすると、接続が拒否された "-1" が返されることです。私はこれを数回試しましたが、理解できません。ブラウザを使用する代わりに手動でこれを送信することが電話で許可されていない可能性がありますか? 何か案は?

4

1 に答える 1

0

質問を投稿すると解決に役立つ場合があります。次の 2 つの問題がありました。

  1. 私のルーターは、ウェブサーバーとして使用していたコンピューターに別の IP を与え続けました。おそらく、リセットするたびに。
  2. 私が考えていたことは何でしょう!!post.php は GET を使用しています。新しいコードは次のとおりです。
//post.php
include 'connect.php';
var_dump($_POST);
$id = $_POST['id'];
$value = $_POST['value'];
$id = mysql_real_escape_string($id);
$value = mysql_real_escape_string($value);

mysql_query(
    "INSERT INTO iot (value, id) VALUES ('$value', '$id');"
)

投稿できるようになりました。エラーが 1 つあります。他の場所を探します。

警告: 入力に予期しない文字があります: '' (ASCII=18) state=0 in C:\xampp\htdocs\iot\pos​​t.php5

于 2016-11-12T20:35:14.417 に答える