2016-11-06 3 views
0

http://www.universalcard.byethost7.com - мой сервер. Где я сохранил файл index.php. Кодекс, как указано нижеESP8266 отправить запрос GET удаленному серверу

<?php 
if(isset($_GET['username']) && isset($_GET['pin']) && isset($_GET['cost'])) { 

$username = $_GET['username']; 
$pin = $_GET['pin']; 
$cost = $_GET['cost']; 
$filecontent = "Username is: ".$username." and PIN is: ".$pin." and cost is: ".$cost."\n"; 
$filestatus = file_put_contents('uc.txt',$filecontent,FILE_APPEND); 
if($filestatus != false) 
{ 
    echo "Data written to file.."; 
}else{ 
    echo "Ohh sorry.."; 
} 

} else { 
    echo "Something went wrong.."; 
} 
?> 

И я хочу, чтобы отправить запрос GET из ESP8266 с Arduino IDE. В этом запросе GET я отправляю 3 имени пользователя «переменные», «pin» и «cost» с некоторыми значениями (тип данных - String). И эти значения добавляются к файлу «uc.txt». Поэтому, когда я отправляю запрос с помощью браузера, значения будут добавляться в текстовый файл.

Но когда я попытался отправить с помощью ESP8266 он не добавляя

Arduino кода ниже

#include <ESP8266WiFi.h> 
#include <WiFiClientSecure.h> 

const char* ssid = "rainbow"; 
const char* password = "12345678"; 

const char* host = "universalcard.byethost7.com"; 
const int httpsPort = 443; 

// Use web browser to view and copy 
// SHA1 fingerprint of the certificate 
//const char* fingerprint = "CF 05 98 89 CA FF 8E D8 5E 5C E0 C2 E4 F7 E6 C3 C7 50 DD 5C"; 

void setup() { 
    Serial.begin(115200); 
    Serial.println(); 
    Serial.print("connecting to "); 
    Serial.println(ssid); 
    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()); 

    // Use WiFiClientSecure class to create TLS connection 
    WiFiClientSecure client; 
    Serial.print("connecting to "); 
    Serial.println(host); 
    if (!client.connect(host, httpsPort)) { 
    Serial.println("connection failed"); 
    return; 
    } 

    String url = "/index.php?username=2bv14is114&pin=5555&cost=1111"; 
    Serial.print("requesting URL: "); 
    Serial.println(url); 

    client.print(String("GET ") + url + " HTTP/1.1\r\n" + 
       "Host: " + host + "\r\n" + 
       "User-Agent: BuildFailureDetectorESP8266\r\n" + 
       "Connection: close\r\n\r\n"); 

    Serial.println("request sent"); 
    while (client.connected()) { 
    String line = client.readStringUntil('\n'); 
    if (line == "\r") { 
     Serial.println("headers received"); 
     break; 
    } 
    } 
    String line = client.readStringUntil('\n'); 
    if (line.startsWith("{\"state\":\"success\"")) { 
    Serial.println("esp8266/Arduino CI successfull!"); 
    } else { 
    Serial.println("esp8266/Arduino CI has failed"); 
    } 
    Serial.println("reply was:"); 
    Serial.println("=========="); 
    Serial.println(line); 
    Serial.println("=========="); 
    Serial.println("closing connection"); 
} 

void loop() { 
} 

И выход в последовательном мониторе ниже

enter image description here

+0

Ваш код говорит 'byethehost7.com', но ваши комментарии говорят' byethehost5.com', что вы отправляете свой запрос на неправильный сайт? – leetibbett

+0

Да, небольшая ошибка, о которой идет речь, должна быть universalcard.byethost7.com. И сейчас я отредактирую вопрос. –

ответ

0

Вашего хозяина имеет некоторую защиту (возможно, против ботов), которая ожидает, что cookie _test установлен JavaScript, если не присутствует.

Вы можете приобрести файл cookie, предварительно посетив сайт с помощью браузера и скопируйте его в свой код.
Вам нужно будет сделать это с того же IP-адреса, что ваш ESP8266 будет представлен на сервере, поскольку файл cookie связан с IP.
В этом случае у вас возникнет проблема, если у вас динамический IP-адрес, а также долговечность файла cookie неизвестно.

Вы также можете приобрести файл cookie, проанализировав ответ, но файл cookie AES зашифрован, и это будет несколько сложнее.

Наиболее разумным решением было бы перейти на хост без такой защиты.
Это решение практически той же проблемы в this и this вопрос.

+0

Да, это проблема с хостом. Я пробовал с другим сайтом хостинга www.hostinger.in, и он отлично работал. –

+0

000webhostapp.com - еще одна проверенная опция – Rick2047

Смежные вопросы