【发布时间】:2017-01-03 05:37:04
【问题描述】:
我正在使用 ESP8266 WiFi 芯片调用 api。我声明了一个全局变量来分配服务器发送的令牌给它。变量赋值是在一个while循环内进行的。在这个循环中,我正在读取回复“令牌”的内容并将其保存在全局变量中。 但是当我在while循环之外打印出结果到变量时是空的。但在循环内部却不是。
String deviceToken;
WiFiClient client;
if (!client.connect(hostIp, 80)){
Serial.println("Connection to server failed.");
Serial.print(client.connect(hostIp, 80));
return;
}
String authURL = "/api/";
authURL += "startauth/";
authURL += serialValue;
Serial.print("Requesting URL: ");
Serial.println(authURL);
// This will send auth request to the server
client.print(String("GET ") + authURL + " HTTP/1.1\r\n" +
"Host: " + host + "\r\n" +
"Connection: close\r\n\r\n");
unsigned long timeout = millis();
while (client.available() == 0) {
if (millis() - timeout > 5000) {
Serial.println(">>> Client Timeout !");
client.stop();
return;
}
}
// Read Auth reply from server and print them to Serial
while(client.available()){
String token = client.readStringUntil('\r');
deviceToken = token;
writeDeviceToken(token.c_str()); //Function to write data in eeprom
Serial.print(deviceToken); //NOT EMPTY
}
Serial.print("Device Token:" + deviceToken); //EMPTY VARIABLE
【问题讨论】:
-
你确定
deviceToken在最后一次迭代中不是空的吗?您能否在最后有效地调用Serial.print("")一次或多次,从而导致此问题? -
@Phylogenesis 是的,这似乎是我删除令牌打印后删除了“0”的问题。
标签: while-loop scope arduino esp8266