var param = ["ConversionRate",
{"xmlns":"http://www.webserviceX.NET/"},
["FromCurrency","USD"],
["ToCurrency","JPY"]
];
var wsdl = SoapService.wsdl("http://www.webservicex.net/CurrencyConvertor.asmx?WSDL");SoapServiceのwsdlでWsdlオブジェクトを取得し、getServiceで指定のサービスのWsdlServiceオブジェクトを取得します。ここまでは既に説明済みですね。
var service = wsdl.getService("CurrencyConvertor");
var result = service.ConversionRate(param);ConversionRateメソッドを呼び出します。引数には、あらかじめ用意しておいた変数paramを指定します。これで得られた結果は、XMLドキュメント(XmlDocumentオブジェクト)の形になっています。ですから、ここから必要に応じて値を取り出さないといけません。
var source = result.toXmlString();
<?xml version="1.0" encoding="UTF-8" standalone="no"?><soap:Envelope>内に<soap:Body>があり、その更に中に<ConversionRateResponse>、更にその中に<ConversionRateResult>が組み込まれています。通常のXmlDocumentならば、getElementで特定の要素を取り出せるのですが、これはうまくいきません。それぞれの要素を階層構造ごとに正確に記述していくことになります。
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<ConversionRateResponse xmlns="http://www.webserviceX.NET/">
<ConversionRateResult>79.005</ConversionRateResult>
</ConversionRateResponse>
</soap:Body>
</soap:Envelope>
var body = result.Envelope.Body;まず、結果内の<soap:Envelope>内の<soap:Body>を取り出します。result.Envelope.Bodyというように、(<soap:○○>のsoapを除いた)タグ名をオブジェクトのプロパティとして指定していくのです。
var convrate = body.ConversionRateResponse.ConversionRateResult;更に、ボディ内から<ConversionRateResponse>を、そのまた中から<ConversionRateResult>を取り出します。これでようやく<ConversionRateResult>79.005</ConversionRateResult>のタグ部分がXmlElementとして取得できました。
Logger.log("Rate: " + convrate.getText());後は、getElementで取得したXmlElementオブジェクトの「getText」メソッドで、タグ内のテキストを取り出すだけです。これで79.005というテキスト部分が取り出せました。
Logger.log("Rate: " + result.Envelope.Body.ConversionRateResponse
.ConversionRateResult.convrate.getText());
※リストが表示されない場合
AddBlockなどの広告ブロックツールがONになっているとリストなどが表示されない場合があります。これらのツールをOFFにしてみてください。
function accessToWsdl() { var param = ["ConversionRate", {"xmlns":"http://www.webserviceX.NET/"}, ["FromCurrency","USD"], ["ToCurrency","JPY"] ]; var wsdl = SoapService.wsdl("http://www.webservicex.net/CurrencyConvertor.asmx?WSDL"); var service = wsdl.getService("CurrencyConvertor"); var result = service.ConversionRate(param); var source = result.toXmlString(); Logger.log(source); var body = result.Envelope.Body; var convrate = body.ConversionRateResponse.ConversionRateResult; Logger.log("Rate: " + convrate.getText()); }
<< 前へ |