【发布时间】:2018-01-03 19:26:11
【问题描述】:
我正在尝试制作一个带有 ESP8266 模块的 Arduino 可以 GET 的 REST API,但是当我尝试向我的服务器发送请求时,我得到的 HTTP 代码是 -1,我没有能够在任何地方找到任何文档(它不在 HTTP 状态代码 here 的列表中)。
我得到-1 响应的测试API 是here,而this API 工作正常。我的 API 很简单:
PHP API:
header('Content-Type: application/json; charset=utf-8');
header('Access-Control-Allow-Origin: *');
$array = array(
"status" => true
);
echo json_encode($array);
Arduino 代码只是 ESP8266 示例之一,如下所示:
#include <ESP8266WiFi.h>
#include <ESP8266HTTPClient.h>
const char* ssid = "Next-Guest";
const char* password = "";
void setup () {
Serial.begin(115200);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(1000);
Serial.print("Connecting..");
}
}
void loop() {
if (WiFi.status() == WL_CONNECTED) {
HTTPClient http;
//http.begin("http://jsonplaceholder.typicode.com/users/1"); <- this works
http.begin("https://makerspace.albe.pw/api/getDoorStatus.php"); // <- this doesn't
int httpCode = http.GET();
Serial.println(httpCode);
if (httpCode > 0) {
String payload = http.getString();
Serial.println(payload);
}
http.end();
}
delay(30000);
}
我可以使用 jQuery AJAX 从任何计算机本地向我的 API 发出 GET 请求,所以它必须有点开放?
是我的主机有问题,还是我的文件缺少一些标头?
【问题讨论】:
-
将
http_response_code(200);放在那里会导致您的发送输出出现问题,请尝试将其移至echo上方。 -
@LawrenceCherone 响应是否存在,或者我放置它的位置与我测试的结果没有什么不同。结果完全一样。
-
它是否适用于注释掉的网址?问题可能出在 https 上。
-
@JohnnyMopp 是的,注释掉的网址可以正常工作
-
不确定,但我认为对于 https,您需要提供足迹。 Simple GET request with ESP8266HTTPClient
标签: php json arduino arduino-esp8266