Main Content

このページの翻訳は最新ではありません。ここをクリックして、英語の最新版を参照してください。

matlab.net.http.io.StringConsumer クラス

パッケージ:matlab.net.http.io
スーパークラス:matlab.net.http.io.ContentConsumer

HTTP ペイロードの文字列コンシューマー

説明

StringConsumerは、応答メッセージの文字データを Content-Type に基づく charset に従ってデコードして応答の本文に格納します。このコンシューマーをRequestMessageの送信時に直接指定して、特定のパラメーターのデータに対する文字列変換を指定できます。

このコンシューマーのサブクラス化の例については、Figure ウィンドウでのストリームデータの表示PricesStreamerクラスを参照してください。

matlab.net.http.io.StringConsumerクラスはhandleクラスです。

作成

説明

消费者= StringConsumerは、メッセージの Content-Type で指定された文字セットを使用して入力をスカラー string に変換するコンシューマーを構築します。

消费者= StringConsumer(Name,Value)は、1 つ以上のName,Valueのペアの引数で指定されたオプションを使用してコンシューマーを構築します。Nameはプロパティ名のCharsetまたはTextTypeで、Valueは対応する値です。Name1,Value1,Name2,Value2のように、名前と値のペアの引数を任意の順番で指定できます。

Charsetプロパティを指定しない場合、このコンシューマーでは、Responseの Content-Type フィールドに基づいて MATLAB®で設定されるContentTypeプロパティからの charset の派生が試行されます。StringConsumerでは、ContentTypeで charset パラメーターが明示的に指定されている場合、あるいはそのタイプの既定の charset が MATLAB で認識されている場合に charset が特定されます。

  • "text/*"- サブタイプに応じて US-ASCII または UTF-8 のいずれか。

  • "application/*"- サブタイプの UTF-8 (json、xml、javascript、css、x-www-form-urlencoded)、それ以外は不明。

このコンシューマーでメッセージのContentTypeから charset を特定できない場合、メッセージは拒否されて変換されません。その場合、ResponseMessage.Bodyには uint8 ペイロードのみが格納されます。charset が不明なメッセージを変換する場合は、メッセージに適用する前 (サブクラスを作成している場合はinitializeメソッドを呼び出す前) にこのコンシューマーでCharsetを設定します。us - asciiおよび他のいくつかの字符集のスーパーセットであるUTF-8 を使用することを推奨します。

プロパティ

すべて展開する

パブリック プロパティ

データの変換に使用する文字セット。string として指定します。この値は最初は空です。空のままにすると、メッセージの受信時にメッセージの Content-Type フィールドで指定された charset または既定の charset に基づいて値が設定されます。変換に別の charset を使用する場合は、StringConsumerコンストラクターで charset を指定するか、このプロパティを直接設定します。このプロパティは、メッセージの途中も含め、サブクラスでいつでも設定できます。この値をputDataの呼び出し後に変更した場合、後続のputDataの呼び出しで新しい値が使用されます。Response.Body.Dataの既存の内容は変更されません。

このプロパティを空のままにした場合、応答の受信の開始時に、MATLAB で Content-Type に基づいて選択された charset に設定されます。このコンシューマーを別のメッセージに再利用する場合は、新しい charset を選択できます。このプロパティを空でない値に設定した場合、MATLAB で変更されることはありません。

属性:

GetAccess
public
SetAccess
public
Dependent
true

返すデータの型。"string"または"char"として指定します。この値は 'TextType' パラメーターからコンストラクターに渡されます。既定の設定は "string" です。この値の変更時にデータが既にResponse.Body.Dataに格納されていた場合、そのデータは新しい型に変換されます。

属性:

GetAccess
public
SetAccess
public
Dependent
true

推奨されるバッファー サイズ。uint64として指定されます。AllocationLengthは、MATLAB により、putDataに渡されるデータの予測されるバッファー サイズに設定されます。実際のサイズは、これよりも小さくなることも大きくなることもあります。パフォーマンスを向上させるために、この値を使用して、コンシューマーでデータを処理するためのスペースを事前に割り当てることができます。

このプロパティは、サブクラスで利用できるように、startメソッドを呼び出す前に MATLAB で設定されます。

属性:

GetAccess
public
SetAccess
public

想定されるペイロードの長さ。uint64として指定されます。このプロパティは通常、Headerプロパティにおけるmatlab.net.http.field.ContentLengthFieldValueプロパティになります。

ContentLengthが空の場合、長さは不明です。ペイロードはputData(uint8.empty)が呼び出された時点で終了します。

このプロパティは、サブクラスでデータの長さを確認できるように、initializeを呼び出す前に MATLAB で設定されます。

このContentConsumerが最上位のコンシューマーのデリゲートである場合、ContentLengthの値が最上位のコンシューマーのContentLengthと異なる値になることがあります。

例:numel(someData)。ここで、someDatauint8型です。

属性:

GetAccess
public
SetAccess
public

ペイロードのメディア タイプ。matlab.net.http.MediaTypeオブジェクトとして指定します。このプロパティは通常、Headerプロパティにおけるmatlab.net.http.field.ContentTypeFieldValueプロパティになります。ContentTypeプロパティが空の場合、ContentTypeFieldは空または存在しません。

このプロパティは、サブクラスでMediaTypeを確認できるように、initializeを呼び出す前に MATLAB で設定されます。データから別のMediaTypeであることがわかった場合は、サブクラスでこのプロパティを設定できます。

この値は、転送の終了時に MATLAB によってResponse.Body.ContentTypeプロパティにコピーされます。

例:'application/octet-stream'

属性:

GetAccess
public
SetAccess
public

現在処理中のペイロードのヘッダー。matlab.net.http.HeaderFieldオブジェクトとして指定されます。

コンシューマーは、このヘッダーを使用して、送られてくるペイロードの処理方法を決定します。最上位のコンシューマーの場合、この値はResponse.Headerと同じになります。デリゲートの場合は値が異なることがあります。たとえば、MultipartConsumerで処理されるマルチパート メッセージの場合は、そのデリゲートで処理中のパートのヘッダーになります。デリゲートは引き続きResponse.Headerで元のメッセージのヘッダーを確認できます。

このプロパティは、サブクラスで利用できるように、initializeを呼び出す前に MATLAB で設定されます。

属性:

GetAccess
public
SetAccess
public

送信が完了したRequestMessagematlab.net.http.RequestMessageオブジェクトとして指定します。これは、すべてのリダイレクトが完了した最終的なRequestMessageであり、sendメソッドからのcompletedrequest戻り値です。

このプロパティは、サブクラスで利用できるように、initializeを呼び出す前に MATLAB で設定されます。

属性:

GetAccess
public
SetAccess
public

処理中のResponseMessagematlab.net.http.ResponseMessageオブジェクトとして指定します。

Responseプロパティは、initializeを呼び出す前に MATLAB で設定されます。この値は、ヘッダーの受信まで完了し、ペイロードを受信する前のResponseMessageになります。応答メッセージの処理の開始時 (マルチパート メッセージの場合はパートの開始時) に、ResponseMesssage.Bodyプロパティは、DataプロパティとPayloadプロパティが空のMessageBodyオブジェクトになります。受信したデータを格納するために、コンシューマーはデータ転送中にResponseプロパティとMessageBody.Dataプロパティを変更できます。通常、コンシューマーはデータセットResponse.Body.Dataを処理してから処理済みのペイロードに格納しますが、これは必須ではありません。転送が完了すると、このResponseが MATLAB からsendの呼び出し元に返されます。ResponseHeaderStatusLineなどの他のプロパティは、コンシューマーで変更しないでください。これらを変更した場合、その変更がsendの呼び出し元に返されます。

Response.Body.Payloadプロパティは転送中は空であり、コンシューマーで変更してはなりません。HTTPOptions.SavePayloadプロパティが設定されると、次に MATLAB は、メッセージまたはパートの転送終了時 (putData(uint8.empty)の呼び出し後)、または例外の発生時に、受信したペイロードにPayloadを設定します。

メッセージの処理中にコンシューマーで例外が発生した場合は、MATLAB からHTTPExceptionオブジェクトがスローされます。HistoryプロパティにはこのResponse値が含まれます。

コンシューマーがマルチパート メッセージのパートを処理するデリゲートの場合、Response.Headerにメッセージ全体のヘッダーが格納され、各パートのContentConsumerを呼び出す前にResponse.BodyPayloadプロパティとDataプロパティがクリアされます。各パートの最後で、元の応答のBody.DataにあるResponseMessageオブジェクトの配列の末尾に、このオブジェクトのHeaderおよびこのプロパティのBodyを含む、新しいResponseMessageが追加されます。次のデリゲートでは、前のデリゲートのMessageBodyではなく空のMessageBodyを含む新規のResponseが確認されます。

属性:

GetAccess
public
SetAccess
public
Dependent
true

処理中の要求の送信先。matlab.net.URIオブジェクトとして指定されます。この値は、sendで決定される元の送信先 URI の値になります。プロキシの URI やリダイレクト後の最終的な URI ではありません。

このプロパティは、サブクラスで利用できるように、initializeを呼び出す前に MATLAB で設定されます。

属性:

GetAccess
public
SetAccess
public

保護プロパティ

データを追加するためにputDataメソッドで呼び出される関数。関数ハンドルとして指定されます。このクラスのputDataメソッドは、data引数で受け取ったデータを応答メッセージの既存のデータに追加するために関数AppendFcnを呼び出します。この関数のシグネチャは次のとおりでなければなりません。

AppendFcn(consumer,newdata)

newdataは、consumer.Response.Body.Dataの配列に追加されるデータです。このメソッドは、Dataの新しい長さに合わせてconsumer.CurrentLengthを更新する必要があります。newdataが空の場合はストリームの末尾を示し、関数によりResponse.Body.Dataが最終的な値に更新されます。

既定の動作では、このプロパティが空の場合、Dataを任意の値の配列として扱う、関数horzcatに対応した内部関数が使用されます。この関数では、スペースを事前に割り当てることで効率的にnewdataが追加され、格納されたデータの実際の長さがCurrentLengthに反映されます。メッセージの最後に、Response.Body.DataCurrentLengthの値までで切り捨てられます。

horzcatが追加処理に適さない場合は、このプロパティをサブクラスで変更できます。たとえば、StringConsumerでスカラー string を作成する場合は、string への追加に関数horzcatではなく関数plusを使用することがあります。

データを追加するContentConsumer.putDataを呼び出さない場合やデータを追加する際のhorzcatの動作に問題がない場合は、サブクラスでこのプロパティを無視することができます。

例:@customAppend@customAppendはコンシューマーによって定義されます。

属性:

GetAccess
protected
SetAccess
protected

このコンシューマーによるデリゲート先のContentConsumermatlab.net.http.io.ContentConsumerオブジェクトとして指定します。呼び出し元のコンシューマー (デリゲーター) のdelegateToメソッドによってCurrentDelegateプロパティが設定されます。現在のデリゲーションがない場合、値は[]です。

MATLAB はinitializeを呼び出す前にCurrentDelegate[]に設定します。

属性:

GetAccess
protected
SetAccess
protected

Response.Body.Dataプロパティの現在のデータの長さ。uint64として指定されます。

このプロパティは、Response.Body.Dataに事前に割り当てられたサイズが現在格納されている実際のデータの量よりも大きい場合に、格納されているデータの長さを示すために使用されます。このプロパティが空の場合は、すべてのResponse.Body.Dataにデータが格納されているか、ContentConsumerサブクラスでResponse.Body.Dataに格納する以外の何らかの方法でデータが破棄されていることを示します。

このプロパティは、この基底クラスのputDataメソッドで、AppendFcnプロパティが空の場合に使用および設定されます。putDataを呼び出すサブクラスで既に格納されているデータを確認したり、AppendFcnの任意の実装でResponse.Body.Dataに結果を反映したりするのに使用できます。

putDataを使用するサブクラスでは、このプロパティを変更してデータが格納されるバッファーの位置をリセットすることもできます。たとえば、既定の関数AppendFcnを使用している場合、putDataの呼び出しごとにすべてのResponse.Body.Dataを処理するサブクラスで元のデータが不要になったときは、CurrentLengthプロパティを 1 にリセットすることで次のputDataの呼び出し時に新しいデータでバッファーを上書きできます。新しいデータの末尾を越えてバッファーの要素をクリアする必要はありません。

putDataを呼び出さないサブクラスでは、このプロパティを独自のデータの追跡に使用できます。使用しない場合は未設定 (空) のままにしておいてかまいません。ここで設定できる値に関して、MATLAB にはいかなる制約もありません。また、この値は、既定のAppendFcnでデータの次のバッファーを格納する位置とメッセージの末尾のデータを切り捨てる位置を特定するためにのみ使用され、それ以外の目的には使用されません。データが切り捨てられないようにするには、putData(uint8.empty)の最後の呼び出しの前にこのプロパティを空に設定します。

このプロパティは、initializeの各呼び出しの前に MATLAB で空に設定されます。

属性:

GetAccess
protected
SetAccess
protected

このコンシューマーのデリゲート元のContentConsumermatlab.net.http.io.ContentConsumerオブジェクトとして指定されます。このコンシューマーがGenericConsumerMultipartConsumerなどの別のコンシューマーから呼び出されたデリゲートである場合、これは呼び出し側のコンシューマーを示します。sendの呼び出しで指定された最上位のコンシューマーの場合は空になります。

デリゲートは、このプロパティを使用してデリゲーターのプロパティにアクセスし、デリゲート元のコンシューマーなどを確認できます。

属性:

GetAccess
protected
SetAccess
protected

メソッド

すべて展開する

詳細

すべて展開する

R2018a で導入