Firebase Databaseで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
私はポストマンを使用して試してみました。郵便配達員の「Body TAB」に公開したいデータを書き込むときに動作します。
{
"param1":"7"
}
しかし、私は、私が本当に知りませんx-www-form-urlencodedでまたはテキスト形式でコードが必要だと思う:私は、JSON形式で記述します。私はsuccesfullのポストにポストマンによって生成された「コード」を参照してください場合
私はこれを持っている:私はGPRSモジュールに送信しようとしてきたものだと私は、どのように私はHTTPエラー400不正な要求を受け取る
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" }
冒頭に語った。
誰かが私を助けることができますか?
ありがとうございました
なぜ 'Content-Length:16'ヘッダがないのですか?また、URLは異なっていますか? ( '.json'対'/.json'、これは非常に奇妙なページ名です)また、コンテンツの前にヘッダーの後に*ダブル* '\ r \ n'が必要です。 –
こんにちはマクシミリアン、私はあなたの提案(あなたは正しい)を行ったが、私はまだサーバーからの同じ回答を持っている(悪い要求)。htttpに接続しようとすると、httpsに関連するものでなければならないと思います... un port 80、接続は拒否されています(ただし、郵便番号で動作します)。私はGPRSmódemで、私はhttpsに接続しようとすると接続要求を受け取ります...ポート443 –
質問を編集し、出力に現在のコードを追加します。この時点でリクエストがURL http:// httpbin.org/postに送信された場合、これはうまくいくでしょう。答えにはJSON形式のリクエストが含まれています。その後、gprsモジュールが実際に送信するものをデバッグし、そこで問題を特定できます。要求がPostmanの要求と同じだがまだ何も返されていないように見える場合、GPRSコマンドを送信する実装が間違っている可能性があります。また、私は今あなたが接続しているポートを理解していませんでしたか? 443で未処理のHTTPリクエストを送信すると、TLSなしでは機能しません。 –