Mam's 3D建築CG住宅CGパース
 

Mam HTTP,HTTPS クライアントコンポーネント
CodeGear社Delphi2009でHTTP,HTTPSでGETできるコンポーネント ライブラリ


TMamEasyGetHTTPHTTPSコンポーネント ライブラリ for Delphi 2009 日本語版
TMamEasyGetHTTPHTTPSコンポーネントはCodeGear社のDelphi2009日本語版で動作するHTTP,HTTPSクライアントのコンポーネントライブラリです。
かなり簡単なプログラム(プロパティ設定をしてGET関数を呼ぶだけという超簡単)でHTTP,HTTPSプロトコルでGETできます。

 
注意点
  • あくまでGETのみです。
  • WinInetのAPIを使用しています。つまりMicrosoft社InternetExplorerのAPIを使用しています。
  • コンテンツタイプがtext/htmlの場合はがんばって文字コード(Charset)を探しますが、適当です。
  • 本コンポーネントの使用にあたっては、自己責任でお願いします。使用にあたって作者は何らの責務をも負わないものとします。
 
インストール
すいませんが、適当にパッケージを作ってインストールしてください。もしくはインストールせずに使用してください。

 
使い方
インストールした場合はコンポーネントパレットの[Samples]にTMamEasyGetHTTPHTTPSコンポーネントが表示されますので、フォームにドラッグして使います。
インストールせずに使うのであれば、uses U_MamEasyGetHTTPHTTPS; とでもしてください。
 
リファレンス
  Publishedプロパティ
    MamEasyGetAccessType:TMamEasyGetAccessType
      MamEasyGet_DIRECT    : 全てのホストをローカルに解決する(Proxy使わない)
      MamEasyGet_PROXY     : プロクシを通さず名前解決できる場合を除いて
                             指定したプロクシを使う
                             (UseProxyNameプロパティで指定)
      MamEasyGet_PRECONFIG : 実行時のユーザーのレジストリに
                             保存されたIE設定を使う(デフォルト)
    UseProxyName:string
      MamEasyGetAccessTypeプロパティがMamEasyGet_PROXYの場合に指定する
      (例)proxy.hoge.jp:8080
 
    BasicUser:string
      ベーシック認証を使うのであればユーザー名を指定する
    BasicPass:string
      ベーシック認証を使うのであればパスワードを指定する
 
    ConnectTimeOut:Integer
      ホスト接続のタイムアウト時間(ミリ秒)
      0を指定するとレジストリに保存されたIE設定を使う(デフォルト)
 
    ConnectRetryCount
      ホスト接続の再試行回数
      0を指定するとレジストリに保存されたIE設定を使う(デフォルト)
    SendTimeOut:Integer;
      ホストへの送信のタイムアウト時間(ミリ秒)
      0を指定するとレジストリに保存されたIE設定を使う(デフォルト)
 
    ReceiveTimeOut:Integer;
      ホストからの受信のタイムアウト時間(ミリ秒)
      0を指定するとレジストリに保存されたIE設定を使う(デフォルト)
 
    SendHeader:String
      追加で送るヘッダー
 
  Publicプロパティ
    StatusCode:Cardinal    (読み取り専用)
      受信したステータスコード
      200,201,301,400など
 
    StatusText:string      (読み取り専用)
      受信したステータスコードに対する文字列
      'OK'など
 
    ContentLanguage:string (読み取り専用)
      受信したコンテンツの言語。'ja-JP'などと想定されるが
      ホストが返してくることがほとんどなさそう。
 
    ContentType:string     (読み取り専用)
      受信したコンテンツのタイプ。
      'text/html'  'image/gif' などの文字列。
      charsetを含んで送ってくれるホストもある。
      (例)'text/html; charset=shift_jis'
 
    ContentLength:Cardinal (読み取り専用)
      受信したコンテンツ(ヘッダー除く)のバイト数
      ホストが返してこない場合も多い。
 
    Cookie:string          (読み取り専用)
      受信したクッキー情報
 
    RcvHeader:String       (読み取り専用)
      受信したヘッダー全ての文字列
 
    ContentEncoding:string (読み取り専用)
      コンテンツのエンコーディング?
      (コンテンツがBASE64やUUEエンコード等されて届く場合がある?)
 
    RcvStream:TMemoryStream
      受信したコンテンツ(ヘッダー除く)のストリーム。
      ContentTypeを調べてimage/gif等の画像ファイル等を受信した場合は、
      このストリームを処理する必要がある。
 
    ContentLines:TStringList (読み取り専用)
      ContentTypeプロパティに text/html が含まれている場合に
      文字列リストとしてコンテンツが保存される。
      (文字コード変換は適当・・・)
 
  メソッド
    function Get(aURL:string):Integer;
      aURLで指定したURLのコンテンツ要求を行う。
      aURLには'http'も'https'も使うことができる。
      エラーが無い場合は戻り値0
      エラーの場合の戻り値はWinInetAPIのエラーコード
      (例)
      ret:=Get('https://www.hoge.hoge/');
 
 
使用例
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls,U_MamEasyGetHTTPHTTPS, ExtCtrls
  ,pngimage,GIFImg,jpeg;

type
  TForm1 = class(TForm)
    Button1: TButton;
    Memo1: TMemo;
    Memo2: TMemo;
    Image1: TImage;
    procedure Button1Click(Sender: TObject);
  private
    { Private 宣言 }
  public
    { Public 宣言 }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var m  :TMamEasyGetHTTPHTTPS;
    er :integer;
    stl:TStringList;
    i  :Integer;
    flag:boolean;
    png:TPNGImage;
    gif:TGIFImage;
    jpg:TJPEGImage;
begin
  Memo1.Lines.Clear;
  Memo2.Lines.Clear;

  m:=TMamEasyGetHTTPHTTPS.Create(nil);

  try
    m.MamEasyGetAccessType:=MamEasyGet_PROXY;
    m.UseProxyName:='proxy.hoge.co.jp:8080';

    m.BasicUser:='username';
    m.BasicPass:='mypasword';

    er:=m.Get('https://www.hoge.co.jp/');


    memo1.Lines.Clear;

    if m.ContentLines.Count<>0 then
    begin
       //「text/html」はここで処理する。
      memo1.Lines.Text:=m.ContentLines.Text;
    end
       //「text/html」以外のものはここ以下で処理する。
    else if pos('image/png',LowerCase(m.ContentType))<>0 then
    begin
      png:=TPngImage.Create;
      try
        png.LoadFromStream(m.RcvStream);
        Image1.Picture.Bitmap.Assign(png);
      finally
        png.Free;
      end;
    end
    else if pos('image/gif',LowerCase(m.ContentType))<>0 then
    begin
      gif:=TGifImage.Create;
      try
        gif.LoadFromStream(m.RcvStream);
        Image1.Picture.Bitmap.Assign(gif);
      finally
        gif.Free;
      end;
    end
    else if pos('image/jpeg',LowerCase(m.ContentType))<>0 then
    begin
      jpg:=TJPEGImage.Create;
      try
        jpg.LoadFromStream(m.RcvStream);
        Image1.Picture.Bitmap.Assign(jpg);
      finally
        jpg.Free;
      end;
    end
    else
    begin
      //上記以外はとりあえず、適当にファイルに保存してみる
      if m.RcvStream.Size<>0 then
        m.RcvStream.SaveToFile('c:\hoge.hoge');
    end;


    memo2.Lines.Add('エラーコード:'+Inttostr(er));
    memo2.Lines.Add('ステータスコード:'+inttostr(m.StatusCode));
    memo2.Lines.Add('ステータス:'+m.StatusText);
    memo2.Lines.Add('言語:'+m.ContentLanguage);
    memo2.Lines.Add('コンテンツ長:'+inttostr(m.ContentLength));
    memo2.Lines.Add('クッキー:'+m.Cookie);
    memo2.Lines.Add('コンテンツタイプ:'+m.ContentType);
    memo2.Lines.Add('-----------------------------------');
    memo2.Lines.Add(m.RcvHeader);
  finally
    m.Free;
  end;

end;

end.

 

 
ダウンロード
TMamEasyGetHTTPHTTPSコンポーネントのダウンロード(10KB)
 

 
著作権表示
TMamEasyGetHTTPHTTPSコンポーネント ライブラリ for Delphi 2009 日本語版
  Copyright (C) 2010 Mam