2017-06-21 1 views
1

最近、私は自分自身にesp8266-12eモジュールを入手し、ESPRUINO.jsファームウェアをロードしました。私はデバイスからPOST要求を実行しようとしていますが、POSTしようとすると、デバイスは常に「no connection」エラーを返します。Espruinoのマイクロコントローラ用HTTP POST

トラブルシューティング同じURLにGETリクエストを実行したが、要求が成功しました。これは、インターネットがデバイス上で動作しており、意図したサーバーとの通信が可能であることを意味します。

次に、HTTP POSTコードにエラーがあるかどうかを確認するために、node.jsアプリケーションで同じコードを実行し、サーバーに正常に投稿しました。

以下のコードは、私のサーバーの正確なアドレスと私のwifi /パス情報を削除したものです。

​​

装置から端末応答を実行した後、ここ

problem with request: no connection 

はEspruino.js HTTPモジュールのドキュメントです。 https://www.espruino.com/Reference#http

リクエストに問題があるのは誰ですか?

+0

あなたは 'wifi.connect()'でHTTP関連のコードをラッピングしていますか? – robertklep

+0

私はwifi設定を 'wifi.save()'を使ってデバイスに保存しました。リクエストを 'wifi.connect'にコールバックする必要がありますか? – ex080

+0

ドキュメントから(私はEspruinoに詳しくはない)、起動時にファームウェアが保存されたWiFiネットワークに再接続するためには 'wifi.save()'を呼び出すだけで十分だと思われます(ただし ' wifi.restore() 'と同じように見える...)。しかし、エラーが出てきたら明示的な 'wifi.connect()'を使って問題を解決するかどうか試してみるかもしれません。また、ここで最後の項目を読んでください:https://www.espruino.com/ESP8266_WifiUsage – robertklep

答えて

0

http投稿要求は、'content-length'ヘッダーが正しく機能することを要求します。

これは、必要な場合がある作業者の作業要請モデルです。注意:ペイロードは、すでにJSONオブジェクトとしてフォーマットされています。

function postX(payload) { 
var options = { 
    host: 'url', 
    port: '80', 
    path:'/ext', 
    method:'POST', 
    headers: { "Content-Type":"application/json", "Content-Length":payload.length } 
}; 
var req = require("http").request(options, function(res) { 
    res.on('data', function(data) { 
    console.log("-->"+data); 
    }); 
    res.on('close', function(data) { 
    console.log("==> Closed."); 
    ticksSinceConnect = 0; 
    }); 
}); 
req.end(payload);}