ESP8266WebServer添加奇怪的字符以启动每个参数

时间:2018-06-09 04:36:01

标签: esp8266 nodemcu arduino-esp8266

我正在使用nodemcu创建一个网络服务器。我想通过http请求将值发送到服务器。我已成功创建服务器并在Windows上使用fiddler发出http请求。 在nodemcu方面,我无法解析收到的参数,因为随机字符被添加到每个arg名称和值的开头,如此

  

Arg no 0 =⸮uname:⸮MyUname

最初我通过创建一个函数来开始工作,在开始时剥离一个字符然后执行匹配。它工作了一段时间,但突然在nodemcu上闪了几个代码之后,字符数增加到2.我意识到我需要找到解决这个问题的可靠方法。

这是我的代码。

ESP8266WebServer server(82);
char *DEFAULT_SSID = "MySSID";
char *DEFAULT_PWD = "MyConnPwd";

void setup() {
    startServer(DEFAULT_SSID, DEFAULT_PWD);
}

void loop() {
    server.handleClient();
}

void startServer(char *ssid, char *password){  
    WiFi.softAP(ssid, password);
    IPAddress myIP = WiFi.softAPIP();

    server.on("/update", updateDeviceConfig);
    server.begin();
}


bool updateDeviceConfig(){
  if (!server.hasArg("uname") || !server.hasArg("pwd")){ //Check if parameters received
      server.send(400, "application/json", "{\"error\" : 0}");
      return false;
  }

   saveConfig(server.arg("uname"), server.arg("pwd"));
   return true;
}

updateDeviceConfig()始终返回false。这是我在Windows上向fiddler提出的请求。

POST http://192.168.4.1:82/update?uname=MyUname&pwd=MyPwd HTTP/1.1
User-Agent: Fiddler
Host: 192.168.4.1:82
Content-Length: 0

我使用以下函数打印出args及其值

void handleGenericArgs() { //Handler

  String message = "Number of args received:";
  message += server.args();            //Get number of parameters
  message += "\n";                            //Add a new line

  for (int i = 0; i < server.args(); i++) {

    message += "Arg no " + (String)i + " = ";   //Include the current iteration value
    message += server.argName(i) + " : ";     //Get the name of the parameter
    message += server.arg(i) + "\n";              //Get the value of the parameter

  } 

  server.send(200, "text/plain", message);       //Response to the HTTP request
}

收到的回复是

收到的参数数量:2 Arg no 0 =⸮⸮uname:⸮⸮MyUname Arg no 1 = ⸮⸮pwd:⸮⸮MyPwd

请求中的每个项目都在开头附加⸮⸮。这是串行监视器的输出。

New client
method: ⸮⸮POST url: /update search: uname=MyUname&pwd=MyPwd
headerName: ⸮⸮User-Agent
headerValue: Fiddler
headerName: ⸮⸮Host
headerValue: 192.168.4.1:82
headerName: ⸮⸮Content-Length
headerValue: 0
:c0 1, 119
args: uname=MyUname&pwd=MyPwd
args count: 2
pos 0=@ 5 &@ 16
arg 0 key: ⸮⸮uname value: ⸮⸮MyUname
pos 17=@ 20 &@ -1
arg 1 key: ⸮⸮pwd value: ⸮⸮MyPwd
args count: 2
Request: /update
 Arguments: uname=MyUname&pwd=MyPwd
Handle Details

任何想法可能是什么原因? string.h库中有什么东西搞砸了吗?这个问题真的让我烦恼。在此先感谢您的帮助!

0 个答案:

没有答案