Main Content

このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。

webwrite

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

説明

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

この例では、データを Web サーバーに書き込む方法を示します。

httpUrl  = 'http://requestserver.mathworks.com';
delim = '&';
pairDelim = '=';
data = 42;
data = num2str(data);
data = ['key', pairDelim, 'value', delim, 'field', pairDelim, data];
responseData = webwrite(httpUrl, data);
disp(responseData);
    dataType: 'application/x-www-form-urlencoded'
    dataSize: '18'

この例では、レコードを JSON オブジェクトとして書き込む方法を示します。

httpsUrl = 'https://requestserver.mathworks.com';
employee(1).Name = 'Jon';
employee(1).Occupation = 'Doctor';
employee(2).Name = 'Sarah';
employee(2).Occupation = 'Engineer';
options = weboptions('MediaType', 'application/json');
responseEmployee = webwrite(httpsUrl, employee, options)
responseEmployee = struct with fields:
    dataType: 'application/json; charset=UTF-8'
    dataSize: '79'

数値と特定の日付を 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 で指定された日付に一致します。

httpbin.org に 2 つの名前と値のペア引数を書き込みます。サイトはリクエストの POST パラメーターを返します。

uri = matlab.net.URI('http://httpbin.org/post');
res = webwrite(uri,'field1','hello','field2','world');
res.form
ans = 

  struct with fields:

    field1: 'hello '
    field2: 'world'

入力引数

すべて折りたたむ

Web サービスへの URL。文字ベクトルまたは string スカラーとして指定します。転送プロトコルを含めます。httphttps のみがサポートされます。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 の値に基づいて変換されます。詳細については、Internet Engineering Task Force (IETF®) Web サイトで RFC 6838 Media Type Specifications and Registration Procedures を参照してください。

例: 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 メソッドを提供します。

ヒント

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

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

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

  • プロキシ サーバーの設定を指定するには、プロキシ サーバー認証を参照してください。

拡張機能

バージョン履歴

R2015a で導入