【问题标题】:ESP8266 client connection to MongoDBESP8266 客户端连接到 MongoDB
【发布时间】:2017-10-07 23:28:15
【问题描述】:

我正在尝试向我的 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
内容类型:文本/纯文本;字符集=utf-8
内容长度:48 缓存控制:必须重新验证

{"error":"bad_request","re​​ason":"invalid_json"}

HTTP/1.1 400 错误
请求服务器:MochiWeb/1.0(你们中的任何一个小伙子都精通吗?)
日期:2017 年 10 月 7 日星期六 11:57:50 GMT
内容长度:0

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

使用 Linux - 我没有问题:

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

【问题讨论】:

    标签: json mongodb curl arduino esp8266


    【解决方案1】:

    问题可能出在 { 之前和 } 末尾的单引号(')

    而不是

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

    应该是

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

    【讨论】:

    • 谢谢,但这并没有什么不同... :-/
    【解决方案2】:

    我错过了这条线:

    "Content-Length: " + String(json.length()) + "\r\n"
    

    在标题中。

    【讨论】:

      猜你喜欢
      • 2017-07-24
      • 1970-01-01
      • 1970-01-01
      • 2018-07-05
      • 2015-02-26
      • 2014-02-18
      • 2014-03-28
      • 2014-03-17
      • 1970-01-01
      相关资源
      最近更新 更多