我打电话给一个使用ESP8266 WiFi芯片的api。 Im声明一个全局变量来分配服务器向它发送的令牌。变量赋值是在while循环内进行的。在这个循环中,我正在读取“令牌”回复的内容并将其保存在全局变量中。 但是,当我打印出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
@Phylogenesis是似乎这是问题,当我删除令牌打印它删除后的“0”。 –