Webduino从curl接收POST参数但不从Node接收

时间:2017-05-09 15:01:30

标签: node.js http curl arduino

以下是使用Webduino库在Arduino上运行的代码:

void handleConfigRequest(WebServer &server, WebServer::ConnectionType type, char *, bool) {

// POST request to receive new config
if (type == WebServer::POST) {

  bool repeat;
  char name[16], value[50];

  do {
      // Returns false when no more params to read from the input
      repeat = server.readPOSTparam(name, 16, value, 50);

      if (strcmp(name, "dName") == 0) {
        strcpy(deviceName, value);
        Serial.println(value);
      }
  } while (repeat);
}

在命令行中从curl执行以下操作时,它按预期工作(并在串行上打印“Test”):

  

curl http://10.0.1.141/config -d“dName = Test”

我还测试了一个简单的HTML表单,它也可以在提交时使用串行打印“Test”:

<form action="http://10.0.1.141/config">
  <input type="text" name="dName" value="test">
  <input type="submit" value="Send">
</form>

但是,使用request代码的以下Node.js不起作用:

var options = {
    url: "http://10.0.1.141/config",
    headers: {
      "Content-Type": "application/x-www-form-urlencoded",
      "Accept": "*/*",
      "User-Agent": "TestingScript"
    },
    form: {dName: "Test"}
  }

  request.post(options, function(error, response, body) {
    console.log(error, response, body)
  })

使用节点代码,Arduino确认HTTP POST请求(在这种情况下,通过闪烁LED),但不会将“Test”打印到串行。

我已将curl和我的Node代码指向requestb.in页面,你可以看到请求本身看起来是相同的(底部是curl,顶部是我的):

Requestbin

有什么建议吗?

1 个答案:

答案 0 :(得分:0)

最后,我用以下jQuery替换了Node request代码:

$.ajax({
  type: "POST",
  url: "http://10.0.1.141/config",
  data: {dName: "Test"}
}, function(data( {
  console.log(data)
}

哪个工作正常。奇。