ドキュメンテーション

最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

webwrite

RESTful Web サービスへのデータの書き込み

構文

response = webwrite(url,PostName1,PostValue1,...,PostNameN,PostValueN)
response = webwrite(url,data)
response = webwrite(___,options)

説明

response = webwrite(url,PostName1,PostValue1,...,PostNameN,PostValueN) は、url で指定された Web サービスにコンテンツを書き込み、response を返します。入力引数 PostName1,PostValue1,...,PostNameN,PostValueN はコンテンツを名前と値のペアとして指定します。webwrite はその名前と値のペアを、Web サービスへの HTTP POST 要求の本文にフォーム エンコードします。response は Web サービスによって定義されます。

Web サービスは、JSON、XML、イメージ、テキストなどのインターネット メディア タイプ形式でデータを返すRESTfulを提供します。

response = webwrite(url,data) は、dataurl で指定された Web サービスにポストし、data に基づいてメディア タイプを設定します。

入力引数 data は、フォーム エンコードされた文字配列としてコンテンツを指定します。webwritedata を Web サービスへの HTTP POST 要求の本文に挿入します。response は Web サービスによって定義されます。

response = webwrite(___,options)weboptions オブジェクト options で指定されたその他の HTTP 要求オプションを追加します。この構文では、前述の構文の入力引数のいずれかを使用できます。

コンテンツをフォーム エンコードされた文字配列 ('application/x-www-form-urlencoded') 以外のインターネット メディア タイプとして書き込むには、optionsMediaType プロパティを指定します。

HTTP POST 要求でデータを要求し、その応答を関数で読み取るには、optionsContentReader プロパティをその関数のハンドルに指定します。複数の出力引数を返す関数のハンドルを指定した場合、webwrite はすべての出力引数を返します。

すべて折りたたむ

ThingSpeak サーバー上のチャネル フィードに数値を書き込んで、読み戻します。

このコードを実行するには ThingSpeak アカウントを作成してください。ThingSpeak アカウントの API 書き込みキーとチャネル ID を使用して webwrite を呼び出します。既定のフィールド名は 'field1' です。

thingSpeakURL = 'http://api.thingspeak.com/';
thingSpeakWriteURL = [thingSpeakURL 'update'];
writeApiKey = 'Your Write API Key';
fieldName = 'field1';
fieldValue = 42;
response = webwrite(thingSpeakWriteURL,'api_key',writeApiKey,fieldName,fieldValue)

この webwrite の呼び出しが ThingSpeak チャネルの最初の更新である場合、response1 です。

チャネルに書き込んだ数値を読み取ります。ThingSpeak は、チャネルに最後に書き込まれたエントリを取得するため別の URL を提供します。チャネル ID はこの URL の一部です。

channelID = num2str(Your Channel ID);
thingSpeakReadURL = [thingSpeakURL 'channels/' channelID '/fields/' fieldName '/last'];
data = webread(thingSpeakReadURL,'api_key',writeApiKey)

data =

42

数値をフォーム エンコードされた文字配列として ThingSpeak サーバー上のチャネル フィードに書き込んで、これを読み戻します。

このコードを実行するには ThingSpeak アカウントを作成してください。ThingSpeak アカウントの API 書き込みキーとチャネル ID を使用して webwrite を呼び出します。API 書き込みキーと数値をフォーム エンコードされた文字配列としてエンコードします。既定のフィールド名は 'field1' です。

thingSpeakURL = 'http://api.thingspeak.com/';
thingSpeakWriteURL = [thingSpeakURL 'update'];
writeApiKey = 'Your Write API Key';
data = 42;
data = num2str(data);
data = ['api_key=',writeApiKey,'&field1=',data];
response = webwrite(thingSpeakWriteURL,data)

この webwrite の呼び出しが ThingSpeak チャネルの最初の更新である場合、response1 です。

チャネルに書き込んだ数値を読み取ります。ThingSpeak は、チャネルに最後に書き込まれたエントリを取得するため別の URL を提供します。チャネル ID はこの URL の一部です。

channelID = num2str(Your Channel ID);
thingSpeakReadURL = [thingSpeakURL 'channels/' channelID '/fields/field1/last'];
data = webread(thingSpeakReadURL,'api_key',writeApiKey)

data =

42

数値を JSON オブジェクトとして ThingSpeak サーバー上のチャネル フィードに書き込んで、その応答を JSON オブジェクトとして読み取ります。

このコードを実行するには ThingSpeak アカウントを作成してください。ThingSpeak アカウントの API 書き込みキーとチャネル ID を使用して webwrite を呼び出します。フィールドが API 書き込みキーと数値である構造体を作成します。既定のフィールド名は 'field1' です。メディア タイプを 'application/json' に指定します。

thingSpeakURL = 'http://api.thingspeak.com/update.json';
writeApiKey = 'Your Write API Key';
data = 42;
data = struct('api_key',writeApiKey,'field1',data);
options = weboptions('MediaType','application/json');
response = webwrite(thingSpeakURL,data,options)

response = 

channel_id: Your Channel ID
field1:42
field2: []
field3: []
field4: []
field5: []
field6: []
field7: []
field8: []
created_at:'2014-11-14T20:08:14Z'
entry_id:1
status: []
latitude: []
longitude: []
elevation: []
location: []

webwrite は、ThingSpeak チャネルに書き込んだ数値を含む JSON オブジェクトを応答として受け取ります。webwrite はこの JSON オブジェクトを変換し、response に構造体として返します。

数値と特定の日付を ThingSpeak サーバー上のチャネル フィードに書き込みます。数値と日付を読み取ります。

このコードを実行するには ThingSpeak アカウントを作成してください。ThingSpeak アカウントの API 書き込みキーとチャネル ID を使用して webwrite を呼び出します。datetime オブジェクトを使用してフィード エントリの日付を指定します。

thingSpeakURL = 'http://api.thingspeak.com/';
thingSpeakWriteURL = [thingSpeakURL 'update'];
writeApiKey = 'Your Write API Key';
fieldName = 'field1';
fieldValue = 42;
D = datetime(2015,3,22,8,15,30,'Format','yyyy-MM-dd HH:mm:ss');
response = webwrite(thingSpeakWriteURL,'api_key',writeApiKey,...
fieldName,fieldValue,'created_at',D)

この webwrite の呼び出しが ThingSpeak チャネルの最初の更新である場合、response1 です。

チャネルの最後のエントリを読み戻します。ThingSpeak は、チャネルに最後に書き込まれたエントリを取得するため別の URL を提供します。URL に last.json を付加してデータを JSON オブジェクトとして取得します。チャネル ID はこの URL の一部です。

channelID = num2str(Your Channel ID);
thingSpeakReadURL = [thingSpeakURL 'channels/' channelID '/fields/' ...
fieldName '/last.json'];
data = webread(thingSpeakReadURL,'api_key',writeApiKey)

data = 

created_at:'2015-03-22T08:15:30Z'
entry_id: 1
field1:'42'

created_at フィールドの日付は D で指定された日付に一致します。

入力引数

すべて折りたたむ

Web サービスへの URL。文字ベクトルまたは string スカラーとして指定します。Web サービスは RESTful インターフェイスを実装します。詳細については、RESTfulを参照してください。

Web サービスの POST パラメーター。1 つ以上の名前と値のペアの引数として指定します。PostName 引数は POST パラメーターの名前を指定しなければなりません。PostValue 引数は、POST パラメーターの値を指定する文字ベクトル、string スカラー、数値、logical 値、または datetime 値でなければなりません。数値、論理値および datetime 値は配列内に含めることもできます。要求の一部として受け入れられる名前と値のペアは、Web サービスによって定義されます。webwrite は名前と値のペアをフォーム エンコードされた文字配列として HTTP POST 要求の本文にエンコードし、既定ではコンテンツ タイプを application/x-www-form-urlencoded に設定します。

PostValuedatetime オブジェクトとして指定した場合、その Format プロパティには Web サービスに必要な形式と一貫した値を指定しなければなりません。Format プロパティにタイム ゾーンまたはオフセットが含まれていて、datetime オブジェクトにゾーンが指定されていない場合、webwrite はタイム ゾーンに 'Local' を指定します。

PostValue 引数に配列を使用して複数の値が含まれている場合は、Web サービスによる指定どおりに配列をフォーム エンコードできるように weboptions オブジェクトの ArrayFormat プロパティを指定します。

例: webwrite('https://www.mathworks.com/matlabcentral/fileexchange/','term','webwrite','duration',7) は、過去 7 日間に File Exchange にアップロードされ webwrite という語を含むファイルのリストを取得します。File Exchange Web サービスは term および duration パラメーターを定義します。

Web サービスにポストするデータ。文字ベクトルまたは string スカラーとして、あるいは MediaType の値が 'json' の場合は数値、cell、logical、または構造体として、MediaType の値が 'XML' の場合はドキュメント オブジェクト モデルとして指定します。data が string または文字ベクトルの場合、webwrite は変換せずに送信します。それ以外のタイプの場合は、いずれも weboptions.MediaType の値に基づいて変換されます。メディア タイプの完全な一覧については、Media Types を参照してください。

例: webwrite('https://www.mathworks.com/matlabcentral/fileexchange/','term=webwrite&duration=7') は、過去 7 日間に File Exchange にアップロードされ webwrite という語を含むファイルのリストを取得します。File Exchange Web サービスは term および duration パラメーターを定義します。

追加の HTTP 要求オプション。weboptions オブジェクトとして指定します。weboptions のプロパティであるすべての要求オプションについては、weboptions を参照してください。

出力引数

すべて折りたたむ

Web サービスからの応答。スカラー、配列、構造体またはテーブルとして返されます。

詳細

すべて折りたたむ

RESTful

REST は Web サービスの一般的なアーキテクチャ スタイルである Representational State Transfer を意味します。RESTful インターフェイスは、GET、PUT、POST、DELETE などの標準の HTTP メソッドを提供します。

ヒント

  • RESTful Web サービス機能によってサポートされていない機能については、HTTP インターフェイスを参照してください。

  • 関数 webwritePostName,PostValue 入力引数をフォーム エンコードされた文字配列として書き込みます。入力引数 options も指定する場合、その MediaType プロパティは 'application/x-www-form-urlencoded' でなければなりません。

  • JSON では標準の日付形式が定義されていないため、webwritedatetime オブジェクトを JSON に変換することはできません。

  • webwrite は、optionsRequestMethod プロパティの値にかかわらず、常に PostName,PostValue のクエリ パラメーターをメッセージ本文に挿入します。

R2015a で導入