SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

VB6プログラマのためのCurl入門(AD)

VB6プログラマのためのCurl入門
ファイルアクセスとWebアクセス

第5回

  • X ポスト
  • このエントリーをはてなブックマークに追加

Webサーバーと通信するプログラム(Curl版)

 それでは、Webサーバーにフルーツの名前を送り、Webサーバーから返されたフルーツの価格を表示するWebクライアントのプログラムをCurlで記述してみましょう。通常のHTMLで作成されたWebページとの大きな違いは、CurlのプログラムならWebサーバーから返されたフルーツの価格をWebクライアント側で処理できることです。WebサーバーとWebクライアントで、クライアント/サーバーシステムを構築できるのです。

 ここでは、簡単な処理ですが、Webクライアント(Curlのプログラム)で、フルーツの価格に文字列を付加して"ミカンは、400円です!"のように表示することにしましょう。エラーを表す-1が返された場合は、"その商品は取り扱っておりません!"と表示します。

 Curl IDEを使って、「WebClient」というマニフェスト名で、新規に「アプレットプロジェクト」を作成してください。IDEの左側にあるツリーで「start.curl」をダブルクリックしてコードエディタを表示させたら、リスト5に示したコードを記述してください。このコードは、先ほどHTMLで記述したWebページと同様のユーザーインターフェースで、GetFruitPrice.aspを呼び出すものです。

リスト5 リスト3のスクリプトを呼び出すCurlのプログラム
{curl 6.0 applet}
{curl-file-attributes character-encoding = "shift-jis"}
{applet manifest = "manifest.mcurl",
    {compiler-directives careful? = true}
}

{value
    let target-url:Url = {url "http://localhost/GetFruitPrice.asp"}
    let fruit-name:TextField = {TextField width = 2in}
    let char-encoding:CharEncoding = {get-character-encoding-by-name "shift-jis"}

    || SUBMITボタンを定義する
    let submit-button:CommandButton =
        {CommandButton label = "Webサーバーに送信",
            || SUBMITボタンのクリックイベント
            {on Action do
                let stream:#TextInputStream = null
                {try
                    let http-file:HttpFile =
                        {target-url.instantiate-File} asa HttpFile
                    let http-form-data:HttpFormData =
                        {HttpFormData default-character-encoding = char-encoding,
                            mime-type = HttpFormData.urlencoded-mime-type
                        }
                    || Webサーバーに送る文字列を用意する
                    {http-form-data.append
                        {new HttpFormStringParam, "FruitName", 
                            fruit-name.value asa String}
                    }
                    || ストリームを開き、Webサーバーへデータを送る 
                    set stream =
                        {http-file.http-read-open
                            request-data = http-form-data, 
                                request-method = HttpRequestMethod.post
                        }
                 catch e:HttpException do
                    {popup-message "エラーです!"}
                }

                || ストリームがヌルでなければデータを受け取っている
                {if stream != null then
                    || 受け取ったデータを処理します
                    let data:StringBuf = {stream.read-one-string}
                    {if data == "-1" then
                      {popup-message "その商品は取り扱っておりません!"}
                     else
                      {popup-message fruit-name.value & "は、" & data & "円です!"}
                    }
                    || ストリームを閉じる
                    {stream.close}
                }
            }
        }

    || HBoxは、画面の項目を水平方向に並べて表示します
    {HBox
        "フルーツの名前",
        fruit-name,
        submit-button
    }
}

 リスト5のポイントを説明しましょう。Urlクラスをデータ型としたオブジェクトtarget-urlに、サーバー側のスクリプトのURLを指定します。変数char-encodingは、文字列のエンコードを示すものです。ここでは、Windows環境で動作させるので、シフトJISを指定しています。

 Webサーバーとの通信でも、ストリームという概念が使われます。ストリームを開き、データを読み書きし、ストリームを閉じるという手順は、この記事の前半で紹介したテキストファイルをアクセスするプログラムの内容に似ています。プログラムの実行結果の例を図5に示します。

図5 リスト5の実行結果の例
図5 リスト5の実行結果の例

Developers Summit 2009

 最後に、皆さまにお知らせがあります。2009年2月12日(木)~13日(金)に、東京の目黒雅叙園でDevelopers Summit 2009が開催されます。「デブサミ」の愛称で知られるデベロッパー向けのイベントです。株式会社カールの講演セッションでは、VB 6.0で開発された業務システムをCurlに置き換えるツールなどが紹介されるそうです。Webで事前登録すれば入場無料ですので、ぜひご参加ください。

修正履歴

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
VB6プログラマのためのCurl入門連載記事一覧

もっと読む

この記事の著者

矢沢久雄(ヤザワヒサオ)

パッケージソフトの開発・販売に従事するかたわら、書籍や雑誌記事の著作活動、セミナーやカンファレンスにおける講演活動も精力的にこなす自称ソフトウエア芸人です。 

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

【AD】本記事の内容は記事掲載開始時点のものです 企画・制作 株式会社翔泳社

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/3518 2009/02/03 15:41

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング