HTTPProvider オブジェクトは、汎用 HTTP プロトコル オブジェクトです。このオブジェクトを VTOM スクリプトから利用して、低レベルの HTTP 操作を行うことができます。HTTPProvider オブジェクトは、主な Application オブジェクトの GetURL メソッドなどの単純な HTTP 関連メソッドに代わるオブジェクトとして導入されました。Application オブジェクトは、カスタマイズ可能な HTTP パラメータの数に制限があります。HTTPProvider を使うと、特定の HTTP プロバイダ プロパティ (Proxy、ProxyPort、Username、Password など) を初期化し、GET、POST、HEAD HTTP メソッド要求を実行することができます。次にリストする多くのプロパティに関する詳細情報については、「W3C HTTP 仕様」を参照してください。
クライアント ID を設定するか、または返します。クライアント ID によって要求が初期化されます。このプロパティを使うと、ユーザをクライアントとして識別したり、ブラウザをエミュレートしたりすることができます。
WWW 認証応答ヘッダ フィールドを返します。このフィールドは、401 (非認可) 応答メッセージに含まれています。フィールド値は、Request-URI に適用される認証方法とパラメータを示す、少なくとも 1 個の呼びかけから構成されます。
受信されたコンテンツ ストリームの長さを返します。
受信されたコンテンツ ストリームのコンテンツ タイプ MIME を返します。
Content-Type エンティティ ヘッダ フィールドを設定するか、または返します。このプロパティは、受信者に送信された Entity-Body のメディア タイプを示します。または、HEAD メソッドの場合、要求が GET であったときに、送信されるはずだったメディア タイプを示します。
Cookie ヘッダ要素を設定するか、または返します。このプロパティを使うと、HTTP 要求とともに一連のクライアント クッキーをサーバに送信することができます。
次の例は、Customer と Cust_ID という名前のクッキーを ColdFusion アプリケーションに送信します。
function Main () { var app = Application; var httpPro = app.HTTPProvider; httpPro.URL = "http://127.0.0.1/GetCustomerRegistration.cfm"; httpPro.Cookie = `Customer="John_Doe"; $Path="/myapp";Cust_ID="4567"; $Path="/myapp"'; httpPro.Get(); }
要求された URL からのドキュメント名のセグメントを返します。
コンテンツ ストリームが複数の応答でサーバから送信された場合に、最新の応答コンテンツ ブロックを返します。
Request-URI によって識別されたリソースの正しい位置を定義する応答ヘッダ フィールドを返します。Location は、転送時に返されるリソースの最終的な URL です。
Modified-Since 要求ヘッダ フィールドを設定するか、または返します。
HTTPProvider オブジェクトが、HTTP 要求実行時にマルチスレッドを使うかどうかを設定するか、または返します。
NoCache 要求ヘッダ フィールドを設定するか、または返します。
Web サーバ アクセス パスワードを設定するか、または返します。
プロキシ サーバを設定するか、または返します。GetApplicationSetting() 関数を設定定数 (50 および 51) とともに使うと、ユーザのプロキシ サーバ設定値を抽出することができます。
var app = Application; var httpPro = app.HTTPProvider; httpPro.Proxy = app.GetApplicationSetting(50); httpPro.ProxyPort = app.GetApplicationSetting(51);
プロキシ サーバ ポートを設定するか、または返します。
プロキシ サーバ ユーザ名を設定するか、または返します。
プロキシ サーバ パスワードを設定するか、または返します。
サーバから受信されたコンテンツ ストリームのサイズを返します。このプロパティを使うと、同期 GET 操作時に進行状況を表示することができます。着信するコンテンツ ストリームの全体の長さを取得するには、ドキュメント ヘッダから抽出される ContentLength プロパティ値を使います。
Status-Code の簡単なテキスト説明を与えることを目的とした Reason-Phrase 要素を返します。Status-Code は、オートマトンが使うように意図されており、Reason-Phrase は、人間のユーザが使うように意図されています。
次は、Status-Code と Reason-Phrase のペアをいくつか示します。
200 - OK 201 - 生成 202 - 容認 204 - 内容なし 301 - 永久的に移動 302 - 一時的に移動 304 - 未変更 400 - 不正要求 401 - 非認可 403 - 禁止 404 - 未検出 500 - 内部サーバ エラー 501 - 未実装 502 - 不良ゲートウェイ 503 - サービス利用不能
ヘッダ要素を文字列として返します。ヘッダ要素は数行に分割されています。
RECEIVED ストリームを文字列として設定するか、または返します。受信されたストリームをファイルに保存するには、SaveReceivedStreamToFile を使います。
Referer 要求ヘッダ フィールドを設定するか、または返します。このフィールドを使うと、要求 URI が取得されたリソースのアドレス (URI) をクライアント側が指定できます。これにより、サーバはリソースへの逆リンクのリストを生成して、対象、ログ機能、キャッシュ機能の最適化を達成できます。また、古いリンクや誤入力されたリンクを追跡して保守することもできます。Request-URI が、独自の URI を持たないソースから得られた場合、たとえば、ユーザからのキーボード入力などから取得された場合は、Referer フィールドを送信してはなりません。
送信者パラメータを設定するか、または返します。
SEND ストリームを文字列として設定するか、または返します。
サーバに送信されたコンテンツ ストリームのサイズを返します。このプロパティを使うと、同期 POST 操作時に進行状況を表示することができます。
HTTPProvider オブジェクトのステートを返します。ステート列挙値は次のとおりです。
0 - httpReady 1 - httpNotConnected 2 - httpConnected (browse) 3 - httpDnsLookup 4 - httpDnsLookupDone 5 - httpWaitingHeader 6 - httpWaitingBody 7 - httpAborting
HTTP 要求の Status-Code 要素を返します。Status-Code 要素は、要求を理解して満たすための 3 桁の整数からなる結果コードです。
HTTP メソッドが適用されるリソースの URL 位置を設定するか、または返します。
Web サーバ アクセス ユーザ名を設定するか、または返します。
procedure Abort()
現在の HTTP 操作を停止します。
procedure Get()
HTTP GET メソッド要求を実行します。プロキシ サーバ設定値、ユーザ名、パスワードなどの HTTP 要求パラメータを設定するには、HTTPProvider オブジェクトの該当するプロパティを使います。
次の例は、Allaire 社のホーム ページに使用する単純な GET メソッドを示しています。
// メッセージボックス定数 var hsOKInfo = 64; function Main () { var app = Application; var httpPro = app.HTTPProvider; httpPro.URL = "http://www.allaire.com"; httpPro.Get(); app.MessageBox( httpPro.ReceivedHeaderAsString ,"Received HTTP Header", hsOKInfo); app.MessageBox( "URL='" + httpPro.URL + "`\n" + "ProxyUsername='" + httpPro.Username + "`\n" + "ProxyPassword='" + httpPro.Password + "`\n" + "Proxy='" + httpPro.Proxy + "`\n" + "ProxyPort='" + httpPro.Proxyport + "`\n" + "ProxyUsername='" + httpPro.ProxyUsername + "`\n" + "ProxyPassword='" + httpPro.ProxyPassword + "`\n" + "Sender='" + httpPro.Sender + "`\n" + "Agent='" + httpPro.Agent + "`\n" + "Reference='" + httpPro.Reference + "`\n" + "NoCache='" + httpPro.NoCache + "`\n" + "ModifiedSince='" + httpPro.ModifiedSince + "`\n" + "Cookie='" + httpPro.Cookie + "`\n" + "ContentTypePost='" + httpPro.ContentTypePost + "`\n" + "MultiThreaded='" + httpPro.MultiThreaded + "`\n"+ "State='" + httpPro.State + "`\n"+ "ContentLength='" + httpPro.ContentLength + "`\n"+ "ContentType='" + httpPro.ContentType + "`\n"+ "RcvdCount='" + httpPro.RcvdCount + "`\n"+ "SentCount='" + httpPro.SentCount + "`\n"+ "StatusCode='" + httpPro.StatusCode + "`\n"+ "ReasonPhrase='" + httpPro.ReasonPhrase + "`\n"+ "AuthorizationRequest='" + httpPro.AuthorizationRequest + "`\n"+ "DocName='" + httpPro.DocName + "`\n"+ "Location='" + httpPro.Location + "`\n" ,"HTTP プロバイダ診断機能", hsOKInfo); var sOutput = httpPro.ReceivedStreamAsString; app.activeDocument.Text = sOutput; }
procedure GetAsync()
HTTP GET メソッド要求を非同期で実行します。
procedure Head()
HTTP HEAD メソッド要求を実行します。
procedure HeadAsync()
HTTP HEAD メソッド要求を非同期で実行します。
procedure Post()
HTTP POST メソッド要求を実行します。次の例は、3 つの FROM 変数が ColdFusion ページに送信される POST メソッドを示しています。
function Main () { var app = Application; var httpPro = app.HTTPProvider; httpPro.URL = "http://127.0.0.1/httptest.cfm"; var CustomerID = "John Doe"; var ProductID = "3456"; var DateSold = "10/10/99"; var PostStream = 'Customer_ID=' + httpPro.URLEncode( CustomerID ) + '&ProductNumber=' + httpPro.URLEncode( ProductID ) + `&SaleDate=' + httpPro.URLEncode( DateSold ); httpPro.SendStreamAsString = PostStream; httpPro.Post(); var sOutput = httpPro.ReceivedStreamAsString; app.activeDocument.Text = sOutput; }
procedure PostAsync()
HTTP POST メソッド要求を非同期に実行します。
procedure SaveReceivedStreamToFile(FilePath: OleVariant; bOverwrite: wordbool): OleVariant
受信されたストリームをファイルに保存し、エラーが発生した場合はエラー メッセージを返します。bOverwrite パラメータは、既存のファイルを置き換えるか、またはエラーを返すかを指定します。
次は、あらかじめ定義されているエラー メッセージです。これらのエラー例を検出するには、次のエラー文字列があるかどうかをチェックしてください。
「ファイルはすでに存在します。」 - FilePath で指定されているファイルが存在し、bOverwrite が False に設定されている場合に返します。
「パスが存在しません。」 - FilePath で指定されているパスが存在しない場合に返します。
次のスクリプトは、SaveReceivedStreamToFile を使った ZIP ファイルのダウンロードを示しています。
function Main () { var hsOKInfo = 64; var app = Application; var httpPro = app.HTTPProvider; httpPro.URL = "http://127.0.0.1/test.zip"; httpPro.Get(); var bOverwrite = false; var sErrorMsg = httpPro.SaveReceivedStreamToFile("d:\\downloads\\test.zip", bOverwrite ); if ( sErrorMsg != "" ) { app.MessageBox( "A error occured :" + sErrorMsg ,"HTTPProvider Error", hsOKInfo); }
}
function URLEncode(const wsValue: WideString): WideString
wsValue 文字列の URLEncoded フォームを返します。この関数は、URL データや FORM データを組み込む場合に適しています。