Webコンパイラーで使えるHTTPクライアントのclass作ってみました。HTTP getとpostだけできます。
まだテスト不十分ですが、とりあえず試しに使ってみていただければ。
●使い方:
1)新規プロジェクトを生成して、ライブラリボタンでgr_sakura_ethernetライブラリをインポートします。
2)Project_root右クリックでzipインポートを選択。HTTPClientLib.zipをインポートします。
Projet_Rootの下にHTTPClientフォルダーができていればOK。
3)サンプルプログラムをまま実行の場合、直ビルドボタン、ダウンロード、実行。
サンプルではHTTP GETでfacebookのAPIを使って、がじぇるねサイトの「いいね (FaceBook)」の数を読み出します。
(詳しくはYOKOBORIさんの作品参照)
ただし、仮想USBシリアルに単純にHTTP GETの結果文字列を表示するだけです。
こんな感じに表示されればOK。
---> HTTP GET
Return = 0
Data=
HTTP/1.1 200 OK
...
<link_stat>
<total_count>23</total_count>
</link_stat>
</fql_query_response>
●クラスの使い方:
自分のプログラムでHTTPClientクラスを使う場合は、こんな感じで。
1)ヘッダーファイルのインクルード
#include <Ethernet.h> //Ethernetのインクルード
#include "HTTPClient.h" //HTTPClientのインクルード
2)オブジェクトの定義
TEthernet Ethernet; // Ethernetオブジェクトの定義
HTTPClient httpclient ; // HTTPクライアントオブジェクトの定義
3)初期化
byte mac[] = { 0xXX, 0xXX, 0xXX, 0xXX, 0xXX, 0xXX }; //EthernetオブジェクトのためのMACアドレスデータ
void setup() { // setup関数の最初のほうで、
Ethernet.begin(mac); // Ethernetオブジェクトを初期化。 DHCPによるIPアドレス他を自動取得
4)HTTP 要求の実行
適宜、
ret = httpclient.get(getURL, getdata, datasize) ;
または、
ret = httpclient.post(postURL, postdata, retdata) ;
を呼び出します。
URLは "abc.bcd.com:1234/abc/bcd" のような形で、ドメイン、ポート、パスを指定します。
ポートを省略すると80番、パスを省略すると"/"と解釈されます。
●制限事項
- postできるデータサイズは1400バイト程度までのようです。
- getについては限界を確認していません。datasizeで指定したバイト数を超えた分は
バッファーに格納せずスキップするようにしてありますが、リターン値としてはエラーには
なりません。
- あまり多数回リクエストを発行すると気絶するようです。
さて、うまく動くかな、...
Attachment: http://japan.renesasrulz.com/gr_user_forum_japanese/m/mediagallery/15.aspx