Skip to main content

HTTP 応答の使用法

ここでは、HTTP 応答オブジェクト (%Net.HttpResponseOpens in a new tab のインスタンス) の使用法について説明します。

応答のデータへのアクセス

HTTP 応答の本文は、応答の Data プロパティに含まれています。このプロパティには、ストリーム・オブジェクト、具体的には %GlobalBinaryStreamOpens in a new tab が含まれています。%GlobalBinaryStreamOpens in a new tab は非推奨になっていますが、このような使用法は引き続きサポートされています。このユース・ケースで別のストリーム・クラスに置き換えることはお勧めできません。

このストリームを使用するには、ストリーム・メソッド Write()WriteLine()Read()ReadLine()Rewind()MoveToEnd()、および Clear() を使用します。また、ストリームの Size プロパティも使用できます。

要求ReadRawMode プロパティは、応答の本文を読み取る方法を制御します。

  • 既定では、このプロパティは False であり、InterSystems IRIS では、本文が、応答の HTTP ヘッダで指定された文字セットである (かつ、それに応じて文字セットを変換している) と見なされます。

  • このプロパティが True の場合、本文が RAW モードで読み取られます (文字セットの変換は行いません)。

また、OutputToDevice() メソッドを使用して、完全な応答を現在のデバイスに書き込むこともできます。ヘッダは、Web サーバによって生成された順序と同じ順序ではありません。

以下の簡単な例では、応答ストリームをファイルにコピーして保存します。

 set request=##class(%Net.HttpRequest).%New()
 set request.Server="tools.ietf.org"
 set request.Https=1
 set request.SSLConfiguration="TEST"
 set status=request.Get("/html/rfc7158")
 if $$$ISERR(status) {
         do $system.OBJ.DisplayError()
 } else {
         set response=request.HttpResponse
 }
 
 Set file=##class(%FileCharacterStream).%New()
 set file.Filename="c:/temp/rfc7158.html"
 set status=file.CopyFrom(response.Data)
 if $$$ISERR(status) {
         do $system.OBJ.DisplayError()
 }
 do file.%Close()

名前による HTTP ヘッダの取得

%Net.HttpResponseOpens in a new tab クラスは、InterSystems IRIS 多次元配列内にその HTTP ヘッダを保存します。ヘッダにアクセスするには、以下のメソッドを使用します。

GetHeader()

指定したヘッダの値を返します。

GetNextHeader()

指定したヘッダの次のヘッダの名前を返します。

これらの各メソッドは、HTTP ヘッダの名前の文字列である単一の引数を取ります。

また、OutputHeaders() メソッドを使用して、HTTP ヘッダを現在のデバイスに書き込むこともできます (ただし、生成された順番と同じ順番ではありません)。

応答に関するその他の情報へのアクセス

%Net.HttpResponseOpens in a new tab クラスは、HTTP 応答のその他の特定の部分を保存するプロパティを提供します。

  • StatusLine は、応答の第 1 行目の HTTP ステータス行を保存します。

  • StatusCode は、HTTP ステータス・コードを保存します。

  • ReasonPhrase は、StatusCode に相当する人間が読める形式の理由を保存します。

  • ContentInfo は、応答本文についての追加情報を保存します。

  • ContentType は、Content-Type: ヘッダの値を保存します。

  • HttpVersion は、応答を送信した Web サーバがサポートする HTTP のバージョンを示します。

関連項目

FeedbackOpens in a new tab