HTTPSRequest example loading json ...
Posted: Tue Apr 23, 2019 3:49 am
I'm stuck, help needed
The HTTPSRequest example works perfectly without any modifications.
Then I modified it to load some stuff from my webserver.
Loading a .json file works as expected
Then I try to load a php file that outputs the same simple json, and this keeps failing. This .php is just echoing exactly the same json as the .json file, no errors, but can't figure out the difference.
https://moveadot.nl/test/json.php
https://moveadot.nl/test/json.json
Thanks in advance
The HTTPSRequest example works perfectly without any modifications.
Then I modified it to load some stuff from my webserver.
Loading a .json file works as expected
Then I try to load a php file that outputs the same simple json, and this keeps failing. This .php is just echoing exactly the same json as the .json file, no errors, but can't figure out the difference.
https://moveadot.nl/test/json.php
https://moveadot.nl/test/json.json
Thanks in advance
Code: Select all
/*
HTTP over TLS (HTTPS) example sketch
This example demonstrates how to use
WiFiClientSecure class to access HTTPS API.
We fetch and display the status of
esp8266/Arduino project continuous integration
build.
Limitations:
only RSA certificates
no support of Perfect Forward Secrecy (PFS)
TLSv1.2 is supported since version 2.4.0-rc1
Created by Ivan Grokhotkov, 2015.
This example is in public domain.
*/
#include <ESP8266WiFi.h>
#include <WiFiClientSecure.h>
#ifndef STASSID
#define STASSID "Network"
#define STAPSK "Password"
#endif
const char* ssid = STASSID;
const char* password = STAPSK;
const char* host = "moveadot.nl";
const int httpsPort = 443;
// Use web browser to view and copy
// SHA1 fingerprint of the certificate
const char fingerprint[] PROGMEM = "4B 06 33 A8 56 C3 E4 DA B3 4F 76 6B 5D BF 4D DB F0 12 47 EE";
void setup() {
Serial.begin(115200);
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());
// Use WiFiClientSecure class to create TLS connection
WiFiClientSecure client;
Serial.print("connecting to ");
Serial.println(host);
Serial.printf("Using fingerprint '%s'\n", fingerprint);
client.setFingerprint(fingerprint);
if (!client.connect(host, httpsPort)) {
Serial.println("connection failed");
return;
}
String url = "/test/json.php";
//String url = "/test/json.json";
Serial.print("requesting URL: ");
Serial.println(url);
client.print(String("POST ") + url + " HTTP/1.1\r\n" +
"Host: " + host + "\r\n" +
"User-Agent: ESP8266\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() {
}