Main Content

이 번역 페이지는 최신 내용을 담고 있지 않습니다. 최신 내용을 영문으로 보려면 여기를 클릭하십시오.

webwrite

RESTful 웹 서비스에 데이터 쓰기

설명

예제

response = webwrite(url,PostName1,PostValue1,...,PostNameN,PostValueN)url로 지정된 웹 서비스에 콘텐츠를 쓰고 response를 반환합니다. 입력 인수 PostName1,PostValue1,...,PostNameN,PostValueN은 콘텐츠를 이름-값 쌍으로 지정합니다. webwrite는 웹 서비스에 대한 HTTP POST 요청의 본문에서 이름-값 쌍을 form-encode합니다. 웹 서비스는 response를 정의합니다.

웹 서비스는 JSON, XML, 이미지 또는 텍스트와 같은 인터넷 미디어 유형으로 형식이 지정된 데이터를 반환하는 RESTful 항목을 제공합니다.

예제

response = webwrite(url,data)url로 지정된 웹 서비스에 data를 게시하고 data를 기준으로 미디어 유형을 설정합니다.

입력 인수 data는 콘텐츠를 form-encode된 문자형 배열로 지정합니다. webwrite는 웹 서비스에 대한 HTTP POST 요청의 본문에 data를 넣습니다. 웹 서비스는 response를 정의합니다.

예제

response = webwrite(___,options)weboptions 객체 options에서 지정한 다른 HTTP 요청 옵션을 추가합니다. 이 구문은 위에 열거된 구문 중 하나의 입력 인수에 사용할 수 있습니다.

콘텐츠를 form-encode된 문자형 배열('application/x-www-form-urlencoded')이 아닌 다른 인터넷 미디어 유형으로 쓰려면 optionsMediaType을 지정하십시오.

데이터를 HTTP POST 요청으로 요청하고 함수를 사용하여 응답을 읽으려면 optionsContentReader 속성을 해당 함수에 대한 핸들로 지정하십시오. 여러 출력 인수를 반환하는 함수에 대한 핸들을 지정하면 webwrite가 모든 출력 인수를 반환합니다.

예제

모두 축소

ThingSpeak™ 서버의 채널 피드에 숫자를 쓰고 다시 읽어옵니다.

이 코드를 실행하기 위해 ThingSpeak 계정을 만듭니다. ThingSpeak 계정의 Write 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

이 예제에서는 데이터를 웹 서버에 쓰는 방법을 보여줍니다.

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 계정의 Write 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에 두 개의 이름-값 쌍 인수를 씁니다(기록합니다). 이 사이트에서 요청의 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'

입력 인수

모두 축소

웹 서비스에 대한 URL로, 문자형 벡터 또는 string형 스칼라로 지정됩니다. 전송 프로토콜을 포함합니다. httphttps만 지원됩니다. 웹 서비스는 RESTful 인터페이스를 구현합니다. 자세한 내용은 RESTful 항목을 참조하십시오.

웹 서비스 게시 파라미터로, 하나 이상의 이름-값 쌍 인수로 지정됩니다. PostName 인수는 게시 파라미터의 이름을 지정해야 합니다. PostValue 인수는 게시 파라미터의 값을 지정하는 문자형 벡터 또는 string형 스칼라이거나 숫자형, 논리형 또는 datetime형 값이어야 합니다. 숫자형, 논리형, datetime형 값이 배열에 들어 있을 수 있습니다. 웹 서비스는 요청의 일부로 받는 이름-값 쌍을 정의합니다. webwrite는 HTTP POST 요청의 본문에서 이름-값 쌍을 form-encode된 문자형 배열로 인코딩하고 콘텐츠 유형을 기본적으로 application/x-www-form-urlencoded로 설정합니다.

PostValuedatetime 객체로 지정하는 경우, 이것의 Format 속성을 웹 서비스에서 요구하는 형식과 일치하도록 지정해야 합니다. Format 속성이 표준 시간대나 오프셋을 포함하고, datetime 객체의 시간대가 지정되지 않은 경우, webwrite'Local'을 표준 시간대로 지정합니다.

PostValue 인수가 배열에 여러 개의 값을 포함할 경우, weboptions 객체의 ArrayFormat 속성을 지정하여 웹 서비스에서 지정한 대로 배열을 form-encode하십시오.

예: webwrite('https://www.mathworks.com/matlabcentral/fileexchange/','term','webwrite','duration',7)은 지난 7일 동안 File Exchange에 업로드된 파일 중에서 webwrite라는 단어가 포함된 파일의 목록을 가져옵니다. File Exchange 웹 서비스는 term 파라미터와 duration 파라미터를 정의합니다.

웹 서비스에 게시할 데이터로, 문자형 벡터, string형 스칼라, 숫자형, 셀형, 논리형으로 지정되거나 구조체(MediaType의 값이 'json'인 경우) 또는 문서 객체 모델(MediaType의 값이 'XML'인 경우)로 지정됩니다. data가 string형 또는 문자형 벡터이면 webwrite는 데이터를 변환하지 않고 전송합니다. 다른 모든 유형은 weboptions.MediaType 값을 기준으로 변환됩니다. 자세한 내용은 IETF®(Internet Engineering Task Force) 웹 사이트의 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 웹 서비스는 term 파라미터와 duration 파라미터를 정의합니다.

추가 HTTP 요청 옵션으로, weboptions 객체로 지정됩니다. weboptions 속성에 해당하는 모든 요청 옵션을 보려면 weboptions를 참조하십시오.

출력 인수

모두 축소

웹 서비스의 응답으로, 스칼라, 배열, 구조체 또는 table형으로 반환됩니다.

세부 정보

모두 축소

RESTful

RESTREpresentational State Transfer 즉, 웹 서비스에 대한 공통된 구조적 스타일을 의미합니다. RESTful 인터페이스는 GET, PUT, POST 또는 DELETE와 같은 표준 HTTP 메서드를 제공합니다.

  • webwrite 함수는 PostName,PostValue 입력 인수를 form-encode된 문자형 배열로 씁니다. options 입력 인수도 지정한다면 그 객체의 MediaType 속성은 'application/x-www-form-urlencoded'여야 합니다.

  • JSON은 표준 날짜 형식을 정의하지 않으므로 webwritedatetime 객체를 JSON으로 변환할 수 없습니다.

  • webwriteoptionsRequestMethod 속성값에 관계없이 항상 PostName,PostValue 쿼리 파라미터를 메시지의 본문에 넣습니다.

  • 프록시 서버 설정을 지정하려면 프록시 서버 인증 항목을 참조하십시오.

확장 기능

버전 내역

R2015a에 개발됨