cfhttp

説明

HTTP リクエストを生成し、サーバーからのレスポンスを処理します。

シンタックス

<cfhttp  
    url = "server URL" 
    charset = "character encoding" 
    clientCert = "filename" 
    clientCertPassword = "password" 
    columns = "query columns" 
    delimiter = "character" 
    file = "filename" 
    firstrowasheaders = "yes|no" 
    getAsBinary = "auto|yes|no|never" 
    method = "method name" 
    multipart = "yes|no" 
    name = "query name" 
    password = "password" 
    path = "path" 
    port = "port number" 
    proxyServer = "host name" 
    proxyPort = "port number" 
    proxyUser = "username" 
    proxyPassword = "password" 
    redirect = "yes|no" 
    resolveURL = "yes|no" 
    result = "result name" 
    textQualifier = "character" 
    throwOnError = "yes|no" 
    timeout = "time-out period in seconds" 
    username = "username" 
    userAgent = "user agent"> 
 
    cfhttpparam tags [optional for some methods] 
 
</cfhttp>
注意: このタグの属性は attributeCollection 属性で指定でき、その値は構造体になります。attributeCollection 属性で構造体の名前を指定し、タグの属性名を構造体のキーとして使用します。

履歴

ColdFusion 8: clientCert 属性と clientCertPassword 属性が追加されました。

ColdFusion MX 7.01: getAsBinary 属性の値として "never" が追加されました。

ColdFusion MX 7: result 属性が追加されました。

ColdFusion MX 6.1:

  • HEAD、PUT、DELETE、OPTIONS、および TRACE の各メソッドのサポートが追加されました。

  • multipartgetAsBinaryproxyUser、および proxyPassword の各属性が追加されました。

  • httpparam 動作が変更されました。すべてのオペレーションに httpparam タグを指定できます。

  • cfhttp.errorDetail という戻り変数が追加されました。

  • レスポンスの本文コンテンツのタイプがテキストと見なされるように変更されました。

  • 複数ヘッダーの動作が変更されました。同じタイプの複数ヘッダーは配列で返されるようになりました。

  • HTTPS プロキシトンネリングのサポートが追加されました。

  • コードとマニュアルのバグが修正されました。

ColdFusion MX:

  • charset 属性と firstrowasheaders 属性が追加されました。

  • SSL (Secure Sockets Layer) のサポートが変更されました。ColdFusion は Sun JSSE ライブラリを使用します。このライブラリは、SSL をサポートするために 128 ビット暗号化をサポートします。

属性

次に示す属性は HTTP トランザクションを制御するためのもので、どの HTTP メソッドでも使用できます。

属性

必須 / オプション

デフォルト

説明

url

必須

http プロトコルを使用

リクエストを処理するサーバー上のリソースのアドレスです。この URL にはホスト名か IP アドレスを含める必要があります。

トランザクションプロトコル (http:// または https://) を指定しなかった場合は、デフォルトのプロトコルである http が使用されます。

この属性でポート番号を指定した場合は、port 属性の値が上書きされます。

cfhttpparam タグの URL 属性を使用すると、クエリー文字列の属性と値のペアがこの URL に追加されます。

charset

オプション

リクエストの場合 : UTF-8

レスポンスの場合 : レスポンスの Content-Type ヘッダに指定された charset、レスポンスが文字セットを指定していない場合はUTF-8

URL クエリー文字列、フォームまたはファイルデータ、レスポンスなどのリクエストの文字エンコードです。一般的に使用される値を次に示します。

  • utf-8

  • iso-8859-1

  • windows-1252

  • us-ascii

  • shift_jis

  • iso-2022-jp

  • euc-jp

  • euc-kr

  • big5

  • euc-cn

  • utf-16

文字エンコードの詳細については、www.w3.org/International/O-charset.html を参照してください。

clientCert

オプション

リクエストのためのクライアント証明書が含まれている PKCS12 形式のファイルへの絶対パスです。

clientCertPassword

オプション

クライアント証明書を復号するために使用されるパスワードです。

compression

オプション

 

ターゲット Web サーバーの圧縮ステータスです。サポートされている値は none のみです。ターゲットの Web サイトが、HTTP 圧縮が有効な IIS で実行されている場合は、この属性を使用して、GET または POST オペレーションを実行するときの接続エラーを回避できます。

getAsBinary

オプション

no

  • no: ColdFusion がレスポンス本文のタイプをテキストとして認識しない場合は、それを ColdFusion オブジェクトに変換します。

  • auto: ColdFusion がレスポンス本文のタイプをテキストとして認識しない場合は、それを ColdFusion Binary タイプデータに変換します。

  • yes: レスポンス本文のコンテンツを必ず ColdFusion Binary タイプデータに変換します。ColdFusion がレスポンス本文のタイプをテキストとして認識する場合でも同様です。

  • never: 特定の MIME タイプから ColdFusion の Binary タイプデータへの自動変換が防止され、返される内容が常にテキストとして処理されます。

ColdFusion は、次の場合にレスポンス本文をテキストとして認識します。

  • ヘッダにコンテンツタイプが指定されていない場合

  • コンテンツタイプが "text" で始まっている場合

  • コンテンツタイプが "message" で始まっている場合

  • コンテンツタイプが "application/octet-stream" である場合

ColdFusion がレスポンス本文をテキストとして認識せず、オブジェクトに変換した場合でも、その本文がテキストから構成されている場合は、cfoutput タグを使って表示することができます。cfoutput タグでは Binary タイプデータを表示できません。バイナリデータをテキストに変換するには、ToString 関数を使用します。

method

オプション

GET

  • GET: サーバーに情報をリクエストします。リクエストされた情報をサーバーが識別するために必要なデータはすべて、URL 内か cfhttptype="URL" タグ内に含まれている必要があります。

  • POST: 処理する情報をサーバーに送信します。cfhttpparam タグが必要です。フォームに似たデータを送信するときによく使われます。

  • PUT: 指定の URL にメッセージ本文を保管するようサーバーにリクエストします。このメソッドは、サーバーにファイルを送信するときに使われます。

  • DELETE: 指定の URL を削除するようサーバーにリクエストします。

  • HEAD: GET メソッドと同じですが、サーバーはレスポンス内にメッセージ本文を送信しません。このメソッドは、ハイパーテキストリンクの有効性やアクセシビリティのテスト、ドキュメントのタイプや修正時刻の確認、またはサーバーのタイプの判別に使用します。

  • TRACE: 受信した HTTP ヘッダをレスポンス本文に挿入して送信者にエコーバックするようサーバーにリクエストします。トレースリクエストには本文がありません。このメソッドを使用すると、ColdFusion アプリケーションはサーバー側で何を受信したかを調べ、そのデータをテストや診断情報に利用することができます。

  • OPTIONS: サーバーまたは指定の URL で使用できる通信オプションについての情報をリクエストします。このメソッドを使用すると、ColdFusion アプリケーションは、追加のサーバー活動を要求しなくても、URL に関連付けられているオプションや要件、あるいはサーバーの機能を判別することができます。

password

オプション

基本認証のターゲット URL にパスワードを渡すために使用します。username と組み合わせて、認証ヘッダで渡される base64 エンコード文字列を形成します。統合 Windows 認証、NTLM 認証、または Kerebos 認証には対応しません。

port

オプション

http の場合は 80、

https の場合は 443

リクエストの送信先となるサーバー上のポート番号です。url 属性のポート値は、この値よりも優先されます。

proxyServer

オプション

リクエストの送信先となるプロキシサーバーのホスト名または IP アドレスです。

proxyPort

オプション

80

プロキシサーバー上で使用するポート番号です。

proxyUser

オプション

プロキシサーバーに提供するユーザー名です。

proxyPassword

オプション

プロキシサーバーに提供するパスワードです。

redirect

オプション

yes

レスポンスヘッダに Location フィールドが含まれ、ColdFusion が 300 系列 (リダイレクション) のステータスコードを受け取った場合、そのフィールド内で指定された URL に実行をリダイレクトするかどうかを指定します。

  • yes: 指定のページに実行をリダイレクトします。

  • no: 実行を停止し、レスポンス情報を cfhttp 変数に返します。あるいは、throwOnError 属性が true の場合はエラーを返します。

cfhttp.responseHeader.Location 変数にはリダイレクトパスが含まれています。ColdFusion では、1 つのリクエストで最大 4 回までリダイレクトが行われます。これよりも多くなると、redirect ="no" を指定した場合と同じ処理が行われます。

メモ : cflocation タグは、Location ヘッダ値として url 属性を使用する HTTP 302 レスポンスを生成します。

resolveURL

オプション

no

  • no: レスポンス本文の中の URL を変換しません。その結果、レスポンス本文に含まれる相対 URL リンクはすべて機能しなくなります。

  • yes: 取得したページ内でもリンクが機能するように、レスポンス本文中の URL (ポート番号も含む) を絶対 URL に変換します。次の HTML タグに適用されます。

  • img

  • src

  • a href

  • form action

  • applet code

  • script src

  • embed src

  • embed pluginspace

  • body background

  • frame src

  • bgsound src

  • object data

  • object classid

  • object codebase

  • object usemap

file 属性および path 属性を使用する場合は、URL を変換しません。

result

オプション

 

結果を受け取る代替変数を指定することができます。

throwOnError

オプション

no

  • yes: サーバーがエラーレスポンスコードを返す場合に、cftrycfcatch (または ColdFusion エラーページ) を使って検出できる例外を返します。

  • no: エラーレスポンスを返す場合に例外を返しません。この場合、アプリケーションは、エラーの有無とその原因を cfhttp.StatusCode 変数から判別することができます。

timeout

オプション

リクエストの最大待機時間を秒数で指定します。レスポンスがないままタイムアウトになった場合は、そのリクエストが失敗したものと見なされます。

クライアントが URL 検索パラメータ内でタイムアウトを指定した場合は (例 : ?RequestTime=120)、その URL タイムアウトと timeout 属性値のうち、短いほうが採用されます。これにより、リクエストが確実にページよりも先に (あるいは同時に) タイムアウトになります。

URL にタイムアウトが指定されていない場合は、Administrator タイムアウトと timeout 属性値のうち、短いほうが採用されます。

上記のどの方法でもタイムアウト値が設定されていない場合は、ColdFusion は cfhttp リクエストの処理を無限に待機することになります。

userAgent

オプション

ColdFusion

ユーザーエージェントリクエストヘッダに配置されるテキストです。リクエストクライアントソフトウェアを識別するために使われます。ColdFusion アプリケーションをブラウザのように見せることができます。

username

オプション

基本認証のターゲット URL にユーザー名を渡すために使用します。password と組み合わせて、認証ヘッダで渡される base64 エンコード文字列を形成します。統合 Windows 認証、NTLM 認証、または Kerberos 認証には対応しません。

PUT メソッドでは、次の属性を使用して、httpparam type="formField" で指定されたデータの送信方法を設定します。

属性

必須 / オプション

デフォルト

説明

multipart

オプション

no

(リクエストが File タイプデータを含んでいる場合にのみマルチパートとして送信)

cfhttpparam type="formField" タグで指定されたすべてのデータを、マルチパートフォームデータ (Content-Type が multipart/form-data) として送信することを ColdFusion に指示します。ColdFusion のデフォルトでは、formField データだけを含む、Content Type が application/x-www-form-urlencoded の cfhttp リクエストが送信されます。ただし、リクエストに File タイプデータも含まれている場合は、すべての部分に multipart/form-data コンテンツタイプが使用されます。

この属性を yes に設定した場合は、Content-Type の説明の中でリクエストの文字セットも送信されます。すべてのフォームフィールドデータをこの文字エンコードでエンコードする必要があります。ColdFusion はこのデータに URLEncode を実行しません。フィールド名は ISO-88591-1 または ASCII である必要があります。一部の http パーサ (以前のバージョンの ColdFusion で使われていたものも含む) は、マルチパートフォームフィールドの文字エンコードの説明を無視します。

次の属性はマルチパートヘッダフィールドを設定し、YouTube にビデオをアップロードする場合などに使用されます。

属性

必須 / オプション

デフォルト

説明

multipartType

オプション

form-data

マルチパートヘッダフィールドを related または form-data に設定できます。デフォルトでは、値は form-data です。

例 :

<!--- Get Video ---> 
<cfset videoName = "<vedio path>\hello.wmv"> 
<cfset videoFileName = "hello.wmv"> 
<cfoutput> 
<!--- Set User Account Data ---> 
<cfset clientKey = "client key from google"/> 
<cfset devKey = "<dev key from google>"/> 
<cfset youTubeUploadURL = "http://uploads.gdata.youtube.com/feeds/api/users/default/uploads"/> 
<!--- Authenticate with Google / YouTube ---> 
<cfhttp url="https://www.google.com/accounts/ClientLogin" method="post" result="result" charset="utf-8"> 
    <cfhttpparam type="formfield" name="accountType" value="HOSTED_OR_GOOGLE"> 
    <cfhttpparam type="formfield" name="Email" value="<gmail id>"> 
    <cfhttpparam type="formfield" name="Passwd" value="<password>"> 
    <cfhttpparam type="formfield" name="service" value="youtube"> 
    <cfhttpparam type="formfield" name="source" value="youtubecode"> 
</cfhttp> 
<!--- Create Auth Token ---> 
<cfset content = result.filecontent> 
<cfset authdata = structNew()> 
<cfloop index="line" list="#content#" delimiters="#chr(10)#"> 
<cfset dtype = listFirst(line, "=")> 
<cfset value = listRest(line, "=")> 
<cfset authdata[dtype] = value></cfloop> 
<!--- Create ATOM XML and save to a file to be sent with video ---> 
    <cfsavecontent variable="meta"><cfoutput> 
    <entry xmlns="http://www.w3.org/2005/Atom"      
    xmlns:media="http://search.yahoo.com/mrss/" 
    xmlns:yt="http://gdata.youtube.com/schemas/2007"> 
    <media:group> 
    <media:title type="plain">WithOutQuotes</media:title> 
    <media:description type="plain">Test Description</media:description> 
    <media:category 
            scheme="http://gdata.youtube.com/schemas/2007/categories.cat">People 
    </media:category>          
    <media:keywords>yourvideo</media:keywords> 
    </media:group> 
    </entry> 
</cfoutput> 
</cfsavecontent> 
<cfset tmpfile = expandPath("./meta.xml")/> 
<cffile action="write" file="#tmpfile#" output="#trim(meta)#" /> 
 
<!--- Upload video ---> 
<cfhttp url="#youTubeUploadURL#" result="result" method="POST"  timeout="450" multipartType="related"> 
<cfhttpparam type="header"     name="Authorization" value="GoogleLogin auth=#authdata.auth#"> 
<cfhttpparam type="header"     name="X-GData-Client" value="#variables.clientkey#"> 
<cfhttpparam type="header" name="X-GData-Key" value="key=#variables.devkey#"> 
<cfhttpparam type="header"     name="Slug" value="#videoFileName#"> 
    <!---<CFHTTPPARAM type="HEADER" name="Connection" value="Keep-Alive"> ---> 
    <!--- Send 2 files ---> 
    <cfhttpparam type="file" name="API_XML_Request" file="#tmpfile#" 
    mimetype="application/atom+xml"> 
<cfhttpparam type="file" name="file" file="#videoName#" mimetype="video/*"> 
</cfhttp> 
<cfdump var="#result#"/> 
</cfoutput>

次の属性を使用すると、必要なオペレーションの結果を返すために使用する変数の名前を指定することができます。指定した名前が、戻り値にアクセスする際の接頭辞として cfhttp と置き換わります。たとえば、result 属性を myResult に設定した場合は、#myResult.FileContent# として FileContent にアクセスします。

result 属性では、複数のページから同時に呼び出される関数または CFC について、一方の呼び出しの結果が他方の呼び出しの結果を上書きしないようにすることができます。cfhttp get オペレーションで返される変数の詳細については、「使用方法」の「cfhttp の get オペレーションで返される変数」を参照してください。

属性

必須 / オプション

デフォルト

説明

result

オプション

結果を返すために使用する変数の名前を指定します。

次の属性は、HTTP レスポンス本文をファイルに保管するときに使用します。GET、POST、PUT、DELETE、OPTIONS、TRACE の各メソッドでレスポンス本文をファイルに保管することができますが、DELETE メソッドと OPTIONS メソッドではほとんど役に立ちません。

属性

必須 / オプション

デフォルト

説明

file

path 属性を指定していて、GET メソッドでない場合は必須

「説明」を参照

レスポンス本文の保管先となるファイルの名前です。

GET オペレーションでは、URL 内でリクエストされたファイルがデフォルトになります (ファイルが指定されている場合)。たとえば、GET メソッドの URL が http:www.myco.com/test.htm である場合、デフォルトファイルは test.htm です。

この属性ではディレクトリへのパスを指定しないでください。パスは path 属性で指定します。

path

file 属性を指定している場合は必須

HTTP レスポンス本文をファイルに保管することを ColdFusion に指示します。ファイルの保管先となるディレクトリへの絶対パスを指定します。

ファイルのメモリ内のディレクトリを指定するには、path 属性で次のシンタックスを使用します。メモリ内のファイルを使用すると、一時的データの処理が速くなります。

ram:///filepath

ファイルパスには、複数のディレクトリを含めることができます (例 : ram:///petStore/images/)。パスに含まれるディレクトリを事前に作成しておく必要があります。メモリ内のファイルの使用方法について詳しくは、『ColdFusion アプリケーションの開発』のWorking with in-memory filesを参照してください。

次の属性は、HTTP レスポンス本文を ColdFusion クエリーオブジェクトに変換するときに使用します。これらの属性は GET メソッドと POST メソッドでのみ使用できます。

属性

必須 / オプション

デフォルト

説明

columns

オプション

レスポンスの 1 行目には列名が含まれます。

このクエリーの列名をカンマで区切って指定します。スペースは使用しません。列名は文字で始める必要があります。2 文字目以降には、文字、数字、アンダースコア文字 (_) を使用できます。

レスポンス内に列名ヘッダがない場合は、列名を識別するためにこの属性を指定します。

この属性を設定したときに、firstrowasHeader 属性が true (デフォルト) だった場合には、この属性で指定した列名によってレスポンスの 1 行目が置き換えられます。この動作を利用して、リクエストによって取得された列名を独自の名前に置き換えることができます。

この属性またはレスポンスからの列名の中で重複する列ヘッダがある場合、その名前にアンダースコアが付加され、固有の名前が作成されます。

この属性で指定した列の数が HTTP レスポンス本文の中の列数と等しくない場合は、エラーが発生します。

delimiter

オプション

, (カンマ)

クエリー列を区切る文字です。レスポンス本文はこの文字を使用してクエリー列を区切る必要があります。

firstrowasheaders

オプション

yes

ColdFusion で、クエリーのレコードセットの最初の行を処理する方法を決定します。

  • yes: 1 行目を列ヘッダとして扱います。columns 属性を指定した場合は、ファイルの 1 行目が無視されます。

  • no: 1 行目をデータとして扱います。columns 属性を指定しなかった場合は、"column_1" のように、"column" という単語に数字を付加した列名が作成されます。

name

オプション

返された HTTP レスポンス本文から指定の名前のクエリーオブジェクトを作成するよう ColdFusion に指示します。

textQualifier

オプション

" [二重引用符]

テキスト列の始まりと終わりを示すオプションの文字です。レスポンス本文中のテキストフィールドがフィールド値の一部に区切り文字を含んでいる場合は、テキストフィールドをこの文字で囲む必要があります。

この文字を列テキストの中に含めるときには、文字を 2 つ指定してエスケープします。たとえば、テキスト修飾子が二重引用符である場合に、この文字をエスケープするには "" と指定します。

使用方法

cfhttp タグは、HTTP リクエストを作成し、返された結果を処理するための汎用ツールです。このタグを使用すると、ほとんどの標準 HTTP リクエストタイプを生成することができます。リクエストヘッダと本文コンテンツを指定するには、このタグ内で cfhttpparam タグを使用します。

ColdFusion は、cfhttp リクエストに対するレスポンスを受け取ると、そのレスポンス本文をファイルまたは cfhttp.FileContent 文字列変数に保管することができます。本文テキストが結果セットとして構築されている場合は、その本文テキストをクエリーオブジェクトに入れることができます。さらに、返されたすべてのヘッダ値へのアクセス、エラーステータスとリダイレクションの処理方法の指定、リクエストをハングさせないためのタイムアウトの指定もできます。

HTTP プロトコルは World Wide Web のバックボーンであり、すべての Web トランザクションで使用されます。cfhttp タグはほとんどのリクエストタイプを生成できるので、非常に柔軟に使用することができます。たとえば次のような使い方があります。

  • Web サービスとしては使用できないダイナミックな Web サイトやサービスとやり取りする(SOAP Web サービスへのアクセスには cfinvoke タグを使用)

  • Web サーバー上のイメージなど、HTML ページやその他のファイルのコンテンツを取得し、それを CFML ページ内で使用したり、ファイルに保管したりする

  • url 属性に https プロトコルを指定して、サーバーに安全なリクエストを送信する

  • POST メソッドを使用して、multipart/form-data スタイルのデータを、そのようなデータを処理して結果を返すことのできる任意の URL (CGI 実行可能ファイルや、その他の ColdFusion ページなど) に送信する

  • PUT メソッドを使用して、FTP リクエストを受け付けないサーバーにファイルをアップロードする

このタグの本文には、cfhttpparam タグを含めることができます。また、PUT リクエストと POST リクエストの場合はこのタグは必須です。このタグに cfhttpparam タグを含める場合は、</cfhttp> 終了タグが必要です。

cfhttp タグを含む HTTPS を使用するためには、各 Web サーバーに対する証明書を、ColdFusion が使用する JRE のキーストアに手動でインポートすることが必要になる場合があります。JSSE (Java Secure Sockets Extension) が認識する機関 (Verisign など) によって証明書が署名 (発行) される場合、つまり、署名する機関が既に cacerts にある場合、この手順は必要ありません。ただし、SSL (Secure Sockets Layer) 証明書を自己発行している場合は、この手順が必要になることがあります。

証明書を手動でインポートするには :

  1. SSL サーバー上の当該ページに進みます。

  2. 鍵のアイコンをダブルクリックします。

  3. [詳細] タブをクリックします。

  4. [ファイルにコピー] をクリックします。

  5. base64 オプションを選択してファイルを保存します。

  6. CER ファイルを C:¥ColdFusion9¥runtime¥jre¥lib¥security (または JRE ColdFusion が使用する任意の場所) にコピーします。

  7. 同じディレクトリの次のコマンドを実行します (keytool.exe は C:¥ColdFusion9¥runtime¥jre¥bin にあります)。

    keytool -import -keystore cacerts -alias giveUniqueName -file filename.cer 

cfhttp の get オペレーションで返される変数

cfhttp タグは、次の変数を返します。result 属性を設定した場合は、割り当てた名前が接頭辞として cfhttp と置き換わります。その他の情報については、result 属性を参照してください。

名前

説明

cfhttp.charSet

レスポンスの Content-Type ヘッダで指定されたレスポンス文字セット (文字エンコード) です。

cfhttp.errorDetail

HTTP サーバーへの接続が失敗した場合に、失敗の詳細を記録します(例 : "Unknown host: my.co.com")。それ以外の場合は、空の文字列になります。エラー状態について、他の変数を確認する前にこの変数を確認することをお勧めします。

cfhttp.fileContent

レスポンス本文です。たとえば、GET オペレーションによって取得された HTML ページのコンテンツなどです。レスポンスをファイルに保管した場合は空になります。

cfhttp.header

すべてのヘッダ情報を 1 つの文字列に格納した生のレスポンスヘッダです。cfhttp.responseHeader 変数と同じ情報を含みます。

cfhttp.mimeType

レスポンスの Content-Type ヘッダで指定されている MIME タイプです (例 : text/html)。

cfhttp.responseHeader

構造体の形式にされたレスポンスヘッダです。要素キーは、Content-Type や Status_Code などのヘッダ名です。あるヘッダタイプのインスタンスが複数ある場合は、そのタイプの値が配列に格納されます。

よく使用されるテクニックは、#cfhttp.resonseHeader[fieldVariable]# のように、cfhttp.responseHeader 構造体をダイナミック配列としてダイナミックにアクセスすることです。

cfhttp.statusCode

HTTP Explanation ヘッダ値の後に続く HTTP status_code ヘッダ値です (例 : "200 OK")。

cfhttp.text

ブール値。レスポンス本文のコンテンツタイプがテキストである場合は true になります。ColdFusion は、次の場合にレスポンス本文をテキストとして認識します。

  • ヘッダにコンテンツタイプが指定されていない場合

  • コンテンツタイプが "text" で始まっている場合

  • コンテンツタイプが "message" で始まっている場合

  • コンテンツタイプが "application/octet-stream" である場合

区切り形式のテキストファイルからクエリーを構築する方法

cfhttp タグでは、レスポンス本文から ColdFusion クエリーオブジェクトを作成することができます。これを行うには、レスポンス本文が、数行から成るテキストを含んでいて、その各行が列区切り文字によって区切られたいくつかのフィールドを含んでいる必要があります。デフォルトの区切り文字はカンマ (,) です。レスポンス本文では、テキスト修飾子を使用することもできます。デフォルトのテキスト修飾子は二重引用符 (") です。文字列フィールドをテキスト修飾子で囲むと、そのフィールドに区切り文字を含めることができます。フィールドテキスト内にテキスト修飾子を含める場合は、その文字を重ねて指定してエスケープします。次の例は、クエリーに変換される 2 行のリクエスト本文を示しています。各行はカンマで区切られた 3 つのフィールドを含んでいます。

Field1,Field2,Field3 
"A comma, in text","A quote: ""Oh My!""",Plain text

ColdFusion がこのデータをどのように処理するかを確認するには、次のコードを実行します。

<cfhttp method="Get" 
    url="127.0.0.1:8500/tests/escapetest.txt" 
    name="onerow"> 
<cfdump var="#onerow#"><br>

列名は次の 3 通りの方法で指定できます。

  • デフォルトでは、レスポンスの 1 行目は列名として使用されます。

  • columns 属性にカンマ区切りの値を指定した場合は、その属性で指定した名前が列名として使用されます。レスポンスの 1 行目にデータが含まれている場合は、firstRowAsHeaders="no" を設定します。データが含まれていない場合、1 行目は無視されます。

  • columns 属性を指定せず、firstrowasheaders="no" を設定した場合は、Column_1、Column_2、... というように列名が生成されます。

cfhttp タグは、このタグによって返されるデータ内の列名をチェックして、列名が文字で始まっていること、および文字、数字、アンダースコア文字 (_) だけを含んでいることを確認します。

ColdFusion は無効な列名をチェックします。列名は文字で始める必要があります。2 文字目以降には、文字、数字、アンダースコア (_) を使用できます。列名が無効な場合は、エラーが発生します。

注意事項

  • ColdFusion Administrator のタイムアウトと URL のタイムアウトを有効にするには、ColdFusion Administrator の [サーバーの設定] ページでタイムアウトを有効にします。詳細については、『ColdFusion 設定と管理』を参照してください。

  • cfhttp タグはすべてのオペレーションで基本認証をサポートします。

  • cfhttp では、SSL を使用してセキュアトランザクション通信が行われます。

  • HTTP レスポンス本文をファイルに保管した場合、それは CFHTTP.FileContent 変数には格納されず、クエリーオブジェクトも生成されません。レスポンス本文をファイルに保管しなかった場合、それは CFHTTP.FileContent 変数に格納されます。このとき、name 属性を指定していればクエリーオブジェクトが生成されます。

  • cfhttp タグは、NTLM 認証やダイジェスト認証をサポートしません。

  • Microsoft IIS を使用している場合、HTTP ヘッダサイズの制限はありません。HTTP ヘッダサイズの制限を指定するには、IIS で設定します。

<!--- This example displays the information provided by  
    the Designer & Developer Center XML feed, 
    http://www.adobe.com/devnet/resources/_resources.xml  
    See http://www.adobe.com/devnet/articles/xml_resource_feed.html  
    for more information on this feed. ---> 
 
<!--- Set the URL address. ---> 
<cfset urlAddress="http://www.adobe.com/devnet/resources/_resources.xml"> 
 
<!--- Use the CFHTTP tag to get the file content represented by urladdress.  
        Note that />, not an end tag, terminates this tag. ---> 
<cfhttp url="#urladdress#" method="GET" resolveurl="Yes" throwOnError="Yes"/> 
 
<!--- Parse the XML and output a list of resources. ---> 
<cfset xmlDoc = XmlParse(CFHTTP.FileContent)> 
<!--- Get the array of resource elements, the xmlChildren of the xmlroot. ---> 
<cfset resources=xmlDoc.xmlroot.xmlChildren> 
<cfset numresources=ArrayLen(resources)> 
 
<cfloop index="i" from="1" to="#numresources#"> 
    <cfset item=resources[i]> 
    <cfoutput> 
        <strong><a href=#item.url.xmltext#>#item.title.xmltext#</strong></a><br> 
        <strong>Author</strong>&nbsp;&nbsp;#item.author.xmltext#<br> 
        <strong>Applies to these products</strong><br> 
        <cfloop index="i" from="4" to="#arraylen(item.xmlChildren)#"> 
            #item.xmlChildren[i].xmlAttributes.Name#<br> 
        </cfloop> 
        <br> 
    </cfoutput> 
</cfloop>