Namespaces

Variants
Actions

Please note that as of October 24, 2014, the Nokia Developer Wiki will no longer be accepting user contributions, including new entries, edits and comments, as we begin transitioning to our new home, in the Windows Phone Development Wiki. We plan to move over the majority of the existing entries over the next few weeks. Thanks for all your past and future contributions.

WebサービスにアクセスするWidgetの使用

From Wiki
Jump to: navigation, search
Article Metadata
Code Example
Source file: Media:Wstutor.zip
Article
Translated:
By fnjwikimng
Last edited: hamishwillee (20 Aug 2012)

W3Cによると、Webサービスは「ネットワーク上で運用性を持った機器間の相互作用をサポートするように設計されたソフトウェアシステム」です。よって、Webサービスは異なる種類のアプリケーション間で通信する方法を提供します。 通常この通信はHTTP上で起こります。WebサービスはポピュラーなWebサイトで広く使われており、Webサイトで提供されている機能を開発者のアプリケーションに組み込むことができます。たとえば、Google,Yahoo!,Amazon,Facebook, そして他多数のサイトを挙げることができます。これらのWebサービスはWidgetを使って簡単にアクセスでき、開発者に新たなエキサイティングな可能性を提供します。Webサービスは、以下2つのカテゴリに分けられます。

  • RESTful Webサービス
  • SOAP Webサービス

RESTful Webサービスへのアクセス

RESTful Webサービスは、リモートで実行される機能と考えられます。これらの機能はパラメータを受取り、その結果を返します。パラメータとして HTTP GET や HTTP POST を使用して送信でき、その結果はJSONオブジェクトまたはXMLテキストです。HTTP GET 経由でパラメータを受取り、JSONオブジェクトを返すRESTful Webサービスの一例は、Google AJAX Language APIです。それは、開発者がテキストブロックの言語を検知して変換することができます。以下のコードは、あるフレーズを英語からフランス語に変換するWebサービスを使用します。

var word      = "The phrase to translate;
var getString = "
v=1.0&q="+escape(word)+"&langpair=en%7Cfr";
var ajaxGet = null;
ajaxGet = new XMLHttpRequest();
ajaxGet.open ("
GET", "http://ajax.googleapis.com/ajax/services/language/translate?"+getString, true);
ajaxGet.onreadystatechange = function() {//Call a function when the state changes.
if(ajaxGet.readyState == 4 ) {
if(ajaxGet.status==200){
//JSON objects can be manipulated exremely easily!!
var transObj = eval('(' + ajaxGet.responseText+ ')');
alert(transObj.responseData.translatedText);
}
}
}
ajaxGet.send(null);

Yahoo! Traffic web serviceは、ある特定の道路の交通情報を表示するWebサービスです。入力パラメータを HTTP GET または HTTP POST として受け取り、そのレスポンスはXMLテキストです。以下に示すコードは、Webサービスを実行します。New YorkのBroadwayの交通情報を取得し、入力としてHTTP POSTを使用します。

var appID = "You have to get an APP ID from yahoo!";
var street= "Broadway";
var city = "New+York";
var state = "NY";
var postQ = "appid="+appID+"&street="+street+"&city="+city+"&state="+state;
var ajaxPost = null;
ajaxPost = new XMLHttpRequest();
ajaxPost.open("POST", "http://local.yahooapis.com/MapsService/V1/trafficData", true);
ajaxPost.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
ajaxPost.setRequestHeader("Content-length", postQ.length);
ajaxPost.onreadystatechange = function() {//Call a function when the state changes.
if(ajaxPost.readyState == 4 ) {
if(ajaxPost.status==200){
\\Do something with the returned xml
}else{
alert("error" );
}
}
}
ajaxPost.send(postQ);

SOAP Webサービス

SOAP Webサービスは、SOAPと呼ばれるXMLベースのプロトコルを使用して実行するWebサービスです。このWebサービスの利点は、全てWSDLと呼ばれる言語で記述されていることです。WSDLはXMLベースの言語で、自動ツールにより、適切なSOAPメッセージを解析・生成することができます。一方で、このWebサービスの欠点は、通常SOAPメッセージが長く、HTTPトラフィック量が望まれない大きさになる可能性があることです。SOAPメッセージは HTTP POSTを使って送信されます。以下の例では、Lyrics Wiki SOAP web servicesを使用し、エアロスミス(Aerosmith)の歌 "eac the rich" の歌詞を検索します。

var artist  = "Aerosmith";
var song = "Eat the rich";
var soapReq = "<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?>"+
"<SOAP-ENV:Envelope SOAP-ENV:encodingStyle=\"http://schemas.xmlsoap.org/soap/encoding/\""+
" xmlns:SOAP-ENV=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\""+
" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:SOAP-ENC=\"http://schemas.xmlsoap.org/soap/encoding/\""+
" xmlns:tns=\"urn:LyricWiki\">"+
"<SOAP-ENV:Body><tns:getSong xmlns:tns=\"urn:LyricWiki\">"+
"<artist xsi:type=\"xsd:string\">"+artist+"</artist>"+
"<song xsi:type=\"xsd:string\">"+song+"</song>"+
"</tns:getSong></SOAP-ENV:Body></SOAP-ENV:Envelope>";
var ajaxPost = null;
ajaxPost = new XMLHttpRequest();
ajaxPost.open("POST", "http://lyricwiki.org/server.php", true);
ajaxPost.setRequestHeader("Content-type", "text/xml");
ajaxPost.setRequestHeader("Content-length", soapReq.length);
ajaxPost.onreadystatechange = function() {//Call a function when the state changes.
if(ajaxPost.readyState == 4 ) {
if(ajaxPost.status==200){
//Do something with the xml result
}else{
alert("error" );
}
}
}
ajaxPost.send(soapReq);

制限事項

現時点での XMLHttpRequest オブジェクト実装では、カスタムHTTPヘッダを設定することができません。しかし、信頼されたユーザのみに提供しているWebサービスでは、ユーザ証明書を送信するためにカスタムHTTPヘッダの利用が必要になります。

This page was last modified on 20 August 2012, at 02:27.
169 page views in the last 30 days.

Was this page helpful?

Your feedback about this content is important. Let us know what you think.

 

Thank you!

We appreciate your feedback.

×