簡體   English   中英

Javascript-Arduino-POST請求-WiFi101-連接問題

[英]Javascript - Arduino - POST request - WiFi101 - Connection issue

在我的代碼中,我嘗試將POST請求發送到IFTTT服務webhooks(制造商)。

我正在使用幾個圖書館,主要是WiFi101

我正在使用Arduino MKR1000。

我已經更新了固件,並為https://maker.ifttt.com:443添加了證書。

在以下代碼中,我調用sslClient.connect(host, 443); 無法建立連接。 我嘗試繞過此方法,只是嘗試將數據打印到主機,但是這也沒有用。

函數返回假值大約需要10到20秒,如果我將主機更改為錯誤的變量,則它立即返回假值。 我認為這是一個好兆頭,因為arduino試圖連接?

wifiSetup()運行良好,可以很快建立連接。

我要引用的代碼如下:

全局定義

//WiFi router setup
char ssid[] = "-----";   //network SSID (aka WiFi name)
char pass[] = "-----"; //network password
int status = WL_IDLE_STATUS;
const char* host = "https://maker.ifttt.com";
WiFiSSLClient sslClient;

Wifi設定程序:這沒有問題

void wifiSetup() {
  // Check for the presence of the shield
  Serial.print("WiFi101 shield: ");
  if (WiFi.status() == WL_NO_SHIELD) {
    Serial.println("NOT PRESENT");
    return; // don't continue
  }
  Serial.println("DETECTED");
  // attempt to connect to Wifi network:
  while ( status != WL_CONNECTED) {
    Serial.print("Attempting to connect to Network named: ");
    Serial.println(ssid);                   // print the network name (SSID);
    // Connect to WPA/WPA2 network. Change this line if using open or WEP network:
    status = WiFi.begin(ssid, pass);
    // wait 10 seconds for connection:
    delay(10000);
  }
  printWifiStatus();                        // you're connected now, so print out the status
}

下面的代碼是導致問題的代碼之一

void sendMessage() {
  if (sslClient.connect(host, 443)) {
    //change this to your Maker setting from https://ifttt.com/services/maker/settings
    String  data = "randomdata";
    sslClient.println("POST /trigger/tank_empty/with/key/bxa");
    sslClient.println("Host: https://maker.ifttt.com");
    sslClient.println("Content-Type: application/json");
    sslClient.print("Content-Length: ");
    sslClient.println(data.length());
    sslClient.println();
    sslClient.print(data);
    sslClient.stop();
    Serial.println("IFTTT request Sucessful");
  }
  else {
    Serial.println("IFTTT request failed");
  }
  delay(20000000);
} 

有沒有人有任何解決方案或要解決的事情?

謝謝大家的幫助,

讓我知道您是否需要任何其他信息。

https://maker.ifttt.com不是有效的主機。 有效主機是IP地址或域。 https://不是域的一部分,而是URL。

您還缺少HTTP協議版本( HTTP/1.1 ),這可能會引起問題。

const char* host = "maker.ifttt.com";
sslClient.println("POST /trigger/tank_empty/with/key/bxa HTTP/1.1");
sslClient.print("Host: ");
sslClient.println(host); // non hardcoded host header
sslClient.println("Content-Type: application/json");
sslClient.print("Content-Length: ");
sslClient.println(data.length());
sslClient.println();
sslClient.print(data);
sslClient.stop();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM