我正尝试在Firebase数据库中使用GPRS模块发布帖子。调制解调器的AT命令由Arduino Uno发送。Firebase AT命令HTTP POST
GPRScommand("AT+CIPSEND", ">", "yy", 10000, 1);
delay(500);
GPRSboard.print("POST /.json?auth=");
GPRSboard.print(FIREBASE_AUTH);
GPRSboard.print(" HTTP/1.1");
GPRSboard.print("\r\n");
GPRSboard.print("Host: ");
GPRSboard.print("XXXXXXXXXXXXXXX-461a8.firebaseio.com");
GPRSboard.print("\r\n");
GPRSboard.print("Content-Type: ");
GPRSboard.print("application/json");
GPRSboard.print("\r\n");
GPRSboard.print("Content-Length: 16");
GPRSboard.print("\r\n");
GPRSboard.print("Cache-Control: ");
GPRSboard.print("no-cache");
GPRSboard.print("\r\n");
GPRSboard.print("\r\n");
GPRSboard.print("{\"param1\":\"7\"}");
GPRScommand(end_c, "HTTP/1.1", "yy", 30000, 1);
它返回我:
+CIPRCV:384,HTTP/1.1 400 Bad Request
我一直在使用邮差尝试。当我编写我想在邮差的“身体标签”中发布的数据时,它就可以工作。我写的JSON格式:
{
"param1":"7"
}
但我想我需要在X WWW的形式,进行了urlencoded或文本格式的代码,我真的不知道。
如果我看到邮差产生的“代码”,在succesfull后我有这样的:
POST /.json?auth=XXXXXXXXXXXXXXXXXXXXXXXXXXXXX HTTP/1.1
Host: XXXXXXXXXXXXXXX-461a8.firebaseio.com
Content-Type: application/json
Cache-Control: no-cache Postman-Token: 2f95151e-52e1-28e7-9583-c0a8f50f77d7
{ "param1":"7" }
这就是我试图发送到GPRS模块,我收到HTTP 400错误的要求,我怎么一开始就告诉过。
有人可以帮助我吗?
非常感谢你
为什么没有'Content-Length:16'标题?另外URL是不同的? ('.json' vs'/ .json',这本身就是非常奇怪的页面名称)在内容之前,你还需要一个* double *'\ r \ n'。 –
你好马克西米利安,我已经做了你的建议(你是对的),但我仍然有相同的答案从服务器(坏请求)。我认为它应该是与https相关的东西,如果我尝试连接到htttp ... un port 80,连接被拒绝(然而邮递员它工作)。随着GPRSmódem我收到好,哟连接请求,当我尝试https ...在端口443 –
然后编辑您的问题,并添加当前代码与输出。此时,如果您将请求发送到URL“http:// httpbin.org/post”,现在会很好 - 答案将以JSON格式包含您的确切请求。然后,您可以调试gprs模块实际发送的内容,并可以在那里确定问题。如果看起来请求与Postman请求完全相同,但仍然不会返回任何内容,则发送GPRS命令的实现可能是错误的。另外我不明白你现在连接的端口是什么?如果没有TLS,在443发送原始HTTP请求将不起作用。 –