我一直在尝试获取一段代码,用于在访问IFTTT小应用程序站点时将文本消息发送到电话,我一直在关注this tutorial关于文本消息本身以及this one代表WiFi防护罩,可以连接到网页和HTTP请求。
基本上,我的问题是它可以连接到任何类似google.com的“简单”网站,但不能连接“较长/复杂”的链接。我想知道您是否会知道我将如何解决该问题并使它正常工作。我尝试仅使用加号将“简单”链接和所需链接的其余部分组合在一起,但这也不起作用。
#include <SoftwareSerial.h> // Include software serial library, ESP8266 library dependency
#include <SparkFunESP8266WiFi.h> // Include the ESP8266 AT library
void setup() {
Serial.begin(9600);
String url = "/trigger/ESP/with/key/dwSukgpyQsyampQMkXXXX";
Serial.print (url);
// put your setup code here, to run once:
if (esp8266.begin()) // Initialize the ESP8266 and check it's return status
Serial.println("ESP8266 ready to go!"); // Communication and setup successful
else
Serial.println("Unable to communicate with the ESP8266 :(");
int retVal;
retVal = esp8266.connect("network", "networkpassword");
if (retVal < 0)
{
Serial.print(F("Error connecting: "));
Serial.println(retVal);
}
IPAddress myIP = esp8266.localIP(); // Get the ESP8266's local IP
Serial.print(F("My IP is: ")); Serial.println(myIP);
ESP8266Client client; // Create a client object
retVal = client.connect("maker.ifttt.com" + url, 80); // Connect to sparkfun (HTTP port)
if (retVal > 0)
Serial.println("Successfully connected!");
client.print("GET / HTTP/1.1\nHost: maker.ifttt.com" + url + "\nConnection: close\n\n");
while (client.available()) // While there's data available
Serial.write(client.read()); // Read it and print to serial
}
void loop() {
// put your main code here, to run repeatedly:
}
谢谢,非常感谢您的帮助!
答案 0 :(得分:1)
首先, connect 函数需要连接服务器(名称)。在您的情况下:maker.ifttt.com。 .com之后的所有内容都会使连接失败(因为它不是正确的服务器名)。
第二:此功能需要一个IP地址(例如54.175.81.255)或一个字符数组。您无法串联。
建立连接后,您可以使用 print 功能向该网站的特定部分发送和接收数据。 另外,在此函数中无法连接。 幸运的是,有一个String类,我们可以轻松地将其连接起来。
因此,在创建客户端对象(ESP8266Client client;
)之后,可能是以下代码:
String url;
char host[] = "maker.ifttt.com";
retVal = client.connect(host, 80);
if (retVal > 0) {
Serial.println("Successfully connected!");
}
url = "GET / HTTP/1.1\r\nHost: ";
url += host;
url += "/trigger/ESP/with/key/dwSukgpyQsyampQMkXXXX";
url += "\nConnection: close\n\n";
client.print(url);
while (client.connected() && !client.available());
while (client.available()) {
Serial.write(client.read());
}