Help us understand the problem. What is going on with this article?

EspruinoをWiFiに繋ぐ - POSTリクエストを送る

More than 5 years have passed since last update.

以前の記事で CC3000 wifiモジュールでgetリクエストを投げることに成功したので、今度はPOSTリクエストを投げてみます。GETリクエストの場合はHttp#getというラッパーメソッドが用意されていたので楽でしたが、POSTリクエストを投げるにはHttp#requestメソッドを直接たたく必要があります。
イメージはnode.js的な感じなので、触った事ある方には馴染みある書き方かもしれません。

目標

Espruino&CC3000にてPOSTリクエストを投げる!

結線

以前の記事と全く同じです。

プログラム

POSTリクエストを試せるサーバを立てたので、そこにリクエストを投げます。POSTリクエストをなげると、レスポンスとして送ったデータをエコーしてくれるので、今回はそれをコンソールに出せれば成功とします。

// wifi接続情報
var accessPointName = "######"; //SSID
var WPA2Key = "#######"; //PASSWORD

function postSample(){

  // オプションを設定
  var payload = {
    sample_arg: "1",
    sample_arg2: "2"
  };
  var queryString = 
      "sample_arg=" + payload.sample_arg +
      "&sample_arg2=" + payload.sample_arg2;

  var host = "node-test-rocky.herokuapp.com";
  var port = 80;
  var path = "/post_sample";
  var options = {
    host: host,
    port: port,
    path: path,
    method: "POST",
    headers: {
      'Content-Type': 'application/x-www-form-urlencoded',
      'Content-Length': queryString.length
    }
  };

  var http = require("http");
  var dataAsString = "";
  var req = http.request( options, function(res) {
    res.on('data', function(data){ 
        // data chunkを繋ぎ込む
        dataAsString += data;
    });
    res.on('close', function(){ 
      console.log( 'from server' ); 
      console.log( dataAsString ); 
    });
  });  
  req.write( queryString );
  req.end();
}

// wifi繋ぎます
LED3.write(true);
var wlan = require("CC3000").connect();
LED2.write(true);
wlan.connect( accessPointName , WPA2Key , function (s) { 
  LED1.write(true);
  console.log('connected');
  if (s=="dhcp") {
    postSample();
  }
});

実行

GETリクエスト同様、完了まで時間がかかります。おまけにサーバもherokuを使っているので、30秒くらいかかるかもしれません。(こいつ、アクセスが一定時間無いとサーバが寝てしまうので立ち上がるのに時間がかかるんです)

下のように送ったデータがコンソールに出力されれば成功です。

image

まとめ

これでEspruino、wifi経由でセンサーの情報をWEBにPOSTすることができるようになりました。ちなみに毎回これ書くのは大変なので、ちょっとしたラッパーメソッドを作り、Gistに上げてあります。
sample_usage.jsにあるような使い方でPOSTリクエストを投げられます。

scouty
「あらゆる事象を必然化し、 世の中のミスマッチをなくす」ことをミッションとし、AIヘッドハンティングサービスを開発・運営するスタートアップ
https://lapras.com
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした