以下是使用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,顶部是我的):
有什么建议吗?
答案 0 :(得分:0)
最后,我用以下jQuery替换了Node request
代码:
$.ajax({
type: "POST",
url: "http://10.0.1.141/config",
data: {dName: "Test"}
}, function(data( {
console.log(data)
}
哪个工作正常。奇。