!!!用語説明 http://www.atmarkit.co.jp/ait/articles/1002/26/news094.html !!!比較 , , SOAP , REST , JSON ,学習容易性 ,× ,○ ,○ ,コーディング量(自動生成分は除く),○ ,× ,○ ,テストのし易さ ,× ,◎ ,× ,開発ツール ,○ ,× ,× ,導入の容易性 ,× ,○ ,○ ,開発にかかるトータル時間 ,× ,○ ,◎ ,複雑なデータの入力 ,○ ,× ,× ,複雑なデータの出力 ,○ ,○ ,△ ,厳密な型チェック ,○ ,× ,× ,汎用性(扱える開発言語の種類) ,○ ,○ ,× ,標準化団体 ,W3C ,- ,ecma ,拡張性(WS-*) ,◎ ,× ,× !!!SOAP !!Java JAX-WSという、SOAPを扱うためのAPIがある。 [[JavaでSOAP]] !!PHP [[PHPでSOAP]] !!JavaScript !!!REST !!Java [[JavaでREST]] !!PHP [[PHPでREST]] !!JavaScript !!!REST http://xmlconsortium.org/wg/web2.0/teigensho/4--REST-SOAP.html 明確な仕様はないが、 RSSのような「URLにアクセスするとXMLが返ってくるようなもの」 !!RESTアクセスのサンプル {{code Java, function requestRest(){ var endpoint = "http://ホスト名/WebSite1/WebService.asmx"; // 送信先 var param1 = "keywork"; // パラメータ // URLを生成 var url = endpoint + "/getHello?str=" + encodeURI(param1) + "&dummy="+(new Date().getTime()); // XMLHttpRequestを作成 try { xmlhttp = new XMLHttpRequest(); // Netscape, Firefoxなど } catch (e){ try { xmlhttp = new ActiveXObject ("Msxml2.XMLHTTP"); // IE } catch (e){ try { xmlhttp = new ActiveXObject ("Microsoft.XMLHTTP"); // IE } catch (e){ // XMLHttpRequestの作成に失敗 } } } xmlhttp.onreadystatechange = method1; // レスポンスを受け取った時に呼ばれるメソッドを指定 xmlhttp.open('GET', url, true); xmlhttp.setRequestHeader ("Content-Type","text/xml; charset=utf-8"); xmlhttp.send(); // RESTで送信 } function method1() { if (xmlhttp.readyState == 4 && xmlhttp.status == 200) { alert(xmlhttp.responseText); // 結果をデバッグ表示 } } }} !!!SOAP XMLでメッセージをやり取りする。 リクエストをXMLで送って、XMLを受け取る。 !!SOAPアクセスサンプル {{code Java, function requestSoap(){ var endpoint = "http://ホスト名/WebSite1/WebService.asmx"; // 送信先 var param1 = "keywork"; // パラメータ // SOAPメッセージを作成 var msg = "\n\ \n\ \n\ \n\ " + param1 + "\n\ \n\ \n\ "; // XMLHttpRequestを作成 try { xmlhttp = new XMLHttpRequest(); // Netscape, Firefoxなど } catch (e){ try { xmlhttp = new ActiveXObject ("Msxml2.XMLHTTP"); // IE } catch (e){ try { xmlhttp = new ActiveXObject ("Microsoft.XMLHTTP"); // IE } catch (e){ // XMLHttpRequestの作成に失敗 } } } xmlhttp.onreadystatechange = method2; // レスポンスを受け取った時に呼ばれるメソッドを指定 xmlhttp.open('POST', endpoint, true); xmlhttp.setRequestHeader ("Content-Type","text/xml; charset=utf-8"); xmlhttp.setRequestHeader ("SOAPAction","\"http://tempuri.org/getHello\""); xmlhttp.send(msg); // SOAPメッセージを送信 } function method2() { if (xmlhttp.readyState == 4 && xmlhttp.status == 200) { xmlDoc = xmlhttp.responseXML; // 結果をDOMオブジェクトとして取得 } } }} {{category2 プログラミング言語,Java}}