首页 > 解决方案 > 来自 ESP8266 的 Firebase 云功能发布请求

问题描述

我正在尝试从 ESP8266 调用 firebase 云功能,它在邮递员那里工作正常,但我在 esp 中得到 http 响应代码 -1。下面是代码,谁能帮我找出我的错误。谢谢

void loop() {
  
 if(WiFi.status()== WL_CONNECTED){   //Check WiFi connection status
  Serial.println("Still Connected !");
   WiFiClientSecure client;
   HTTPClient http;   
  
   http.begin(client, "https://us-central1-firedetectionapi.cloudfunctions.net/status");  //Specify destination for HTTP request
  
   http.addHeader("Content-Type", "application/json");             //Specify content-type header
  
   int httpResponseCode = http.POST("{\"F\":\"T\"}");   //Send the actual POST request
  
   if(httpResponseCode>0){
  
  
    Serial.println("API Called");   //Print return code
   
  
   }else{
  
    Serial.print("Error on sending POST: ");
    Serial.println(httpResponseCode);
  
   }
  
   http.end();  //Free resources
  
 }else{
  
    Serial.println("Error in WiFi connection");   
  
 }

标签: firebasearduinohttp-postesp8266

解决方案


使用 HTTPS 协议时,Arduino HTTP 客户端需要服务器证书的指纹/哈希。

这可以通过以下方式设置:

client.setFingerprint("81:dc:88:59:f1:fd:3b:f2:4a:27:c6:ba:39:44:3c:1c:16:4f:9c:ae");
http.begin(client, "https://us-central1-firedetectionapi.cloudfunctions.net/status");

推荐阅读