MachiKania type P ver 1.3 で、http クライアント
2023年9月29日
MachiKania type P の ver 1.3 では、Raspberry Pi Pico W を使って、WiFi 接続及びインターネット接続が出来るようになりました。この記事では、MachiKania を http クライアントとして利用する方法について述べます。
ver 1.3 では WiFi 機能の追加に伴って13種類の新たな命令・関数が追加されています。それらを使えば様々なインターネット接続(クライアント・サーバー)を行うことができますが、非常に複雑な手続きが必要です。そこで、インターネットの接続で最もよく使う、http プロトコルに関して、クラスライブラリーを用意しました。
ここでは、新規に追加されたクラスのうち、WGET クラスについて説明します。http クライアントを簡易に構築するためのクラスです。
最も簡単な使用方法
WGETクラスは、オブジェクトを作成せずに、スタティックメソッド呼び出しで使います(help.txtを参照)。多くの方が一番よく使うのは、おそらく「WGET::FORSTRING$()」です。以下の例は、もっとも簡単なサンプルプログラムです。
Webページにアクセスして、その内容を表示するものです。上のコードを実行すると、結果は以下の例のようになるはずです。
「<html>」から「</html>」が、指定のURLから取得した内容です。
多くの場合、「WGET::FORSTRING$()」を使うのが、確実で簡単な方法でしょう。得る情報がテキストなら(HTML, JSON, RSSなど)、この方法で簡単に得ることができます。
バイナリーファイルのダウンロード
「WGET::FORSTRING$()」では、ヌル文字(\0)を含むデーター、例えば画像ファイルの取り込みが出来ません。そういったデーターをインターネットからダウンロードしてくるには、「WGET::FORFILE()」もしくは「WGET::FORBUFFER()」を使います。下は、「WGET::FORFILE()」を使って、TIFFファイルをダウンロードしてファイルとして保存し、表示する例です(TIFFファイルは、16色もしくは256色の、圧縮無しのものに対応)。
実行結果は、以下の例のようになるはずです。
「WGET::FORBUFFER()」を使う場合は、少し複雑ですが、以下のように書きます。実行結果は、上と同じです。下のコードの「b,4800」で、「b」はバッファーアドレス、「4800」はバッファーの有効バイト数です(ここで使用したTIFFファイルは、4770バイトです)。
セキュアーコネクション(https)も可能
httpプロトコルをセキュアーコネクションで行いたい場合(http ではなく、https)も、WGETを使えます。使い方は同じで、URLに"https://"と書くだけです。
ただし、ドキュメントの wifi.txt にも書きましたが、MachiKania で https サイトにアクセスした場合、通常のブラウザーによる https サイトへのアクセスに比べて、セキュリティーレベルが低いです。MachiKania から https サイトへのアクセスでは、パスワードや個人情報などを送付しないようにしてください。こちらから送付する情報なしでデーターを取得するだけなら、何も問題にする必要はありません。
WGETクラスの利用例
WGETクラスを利用して、天気予報をインターネットから得て知らせてくれる箱を作りました。詳しくは、別記事で説明します。
ver 1.3 では WiFi 機能の追加に伴って13種類の新たな命令・関数が追加されています。それらを使えば様々なインターネット接続(クライアント・サーバー)を行うことができますが、非常に複雑な手続きが必要です。そこで、インターネットの接続で最もよく使う、http プロトコルに関して、クラスライブラリーを用意しました。
ここでは、新規に追加されたクラスのうち、WGET クラスについて説明します。http クライアントを簡易に構築するためのクラスです。
最も簡単な使用方法
WGETクラスは、オブジェクトを作成せずに、スタティックメソッド呼び出しで使います(help.txtを参照)。多くの方が一番よく使うのは、おそらく「WGET::FORSTRING$()」です。以下の例は、もっとも簡単なサンプルプログラムです。
useclass WGET t$=WGET::FORSTRING$("http://www.rad51.net/projects/typep/") print t$
Webページにアクセスして、その内容を表示するものです。上のコードを実行すると、結果は以下の例のようになるはずです。
「<html>」から「</html>」が、指定のURLから取得した内容です。
多くの場合、「WGET::FORSTRING$()」を使うのが、確実で簡単な方法でしょう。得る情報がテキストなら(HTML, JSON, RSSなど)、この方法で簡単に得ることができます。
バイナリーファイルのダウンロード
「WGET::FORSTRING$()」では、ヌル文字(\0)を含むデーター、例えば画像ファイルの取り込みが出来ません。そういったデーターをインターネットからダウンロードしてくるには、「WGET::FORFILE()」もしくは「WGET::FORBUFFER()」を使います。下は、「WGET::FORFILE()」を使って、TIFFファイルをダウンロードしてファイルとして保存し、表示する例です(TIFFファイルは、16色もしくは256色の、圧縮無しのものに対応)。
useclass WGET,CSWTIF WGET::FORFILE("temp.tif","http://www.rad51.net/projects/typep/image.tif") i=new(CSWTIF,"temp.tif") point 0,200 i.SHOW()
実行結果は、以下の例のようになるはずです。
「WGET::FORBUFFER()」を使う場合は、少し複雑ですが、以下のように書きます。実行結果は、上と同じです。下のコードの「b,4800」で、「b」はバッファーアドレス、「4800」はバッファーの有効バイト数です(ここで使用したTIFFファイルは、4770バイトです)。
useclass WGET,CSWTIF dim b(1199) s=WGET::FORBUFFER(b,4800,"http://www.rad51.net/projects/typep/image.tif") fopen "temp.tif","w" fput b,s fclose i=new(CSWTIF,"temp.tif") point 0,200 i.SHOW()
セキュアーコネクション(https)も可能
httpプロトコルをセキュアーコネクションで行いたい場合(http ではなく、https)も、WGETを使えます。使い方は同じで、URLに"https://"と書くだけです。
ただし、ドキュメントの wifi.txt にも書きましたが、MachiKania で https サイトにアクセスした場合、通常のブラウザーによる https サイトへのアクセスに比べて、セキュリティーレベルが低いです。MachiKania から https サイトへのアクセスでは、パスワードや個人情報などを送付しないようにしてください。こちらから送付する情報なしでデーターを取得するだけなら、何も問題にする必要はありません。
WGETクラスの利用例
WGETクラスを利用して、天気予報をインターネットから得て知らせてくれる箱を作りました。詳しくは、別記事で説明します。