ESP8266与MongoDB的客户端连接

时间:2017-10-07 12:47:47

标签: json mongodb curl arduino esp8266

我试图将新记录发布到我的MongoDB(实际的CouchDB),但似乎我的请求格式出现问题。

我使用以下代码: (不显示调试和验证)

WiFiClient client;
client.connect("172.16.1.4", 5984)

String connStr = "POST /iot/ HTTP/1.1\r\n"
            "Host: user:password@172.16.1.4:5984/ \r\n"
            "Content-Type: application/json\r\n"
            "\r\n"
            "'{\"a\":1}'\r\n\r\n";

client.print(connStr);

我得到了回复:

  

HTTP / 1.1 400错误请求
  服务器:CouchDB / 1.6.1(Erlang OTP / 18)
  日期:星期六,2017年10月7日11:57:50 GMT
  内容类型:text / plain;字符集= UTF-8
  内容长度:48缓存控制:必须重新验证

     

{"错误":" bad_request","原因":" invalid_json"}

     

HTTP / 1.1 400坏了   请求服务器:MochiWeb / 1.0(你们中的任何人都得到了一个smint?)
  日期:星期六,2017年10月7日11:57:50 GMT
  内容长度:0

我尝试过使用不同的json / data ...

使用Linux - 我没有问题:

  

curl -X POST用户:password@172.16.1.4:5984 / iot / -H" Content-Type:application / json" -d' {" a":3}'

2 个答案:

答案 0 :(得分:0)

问题可能出在{和}

之前的单引号(')

而不是

 "'{\"a\":1}'\r\n\r\n"

应该是

 "{\"a\":1}\r\n\r\n"

答案 1 :(得分:0)

我错过了这条线:

"Content-Length: " + String(json.length()) + "\r\n"
标题中的