我正嘗試在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請求將不起作用。 –