4

wsdlSOAPリクエストで複数の要素を機能させるのに問題があります。次の変換をwebservicexサイトで直接試してみると、現在の通貨換算が表示されます。アプリスクリプト内で同じことをしようとすると、レートに対して常に「0」が返されます。ここで何が欠けていますか?

function getCurrencyConversion2(){
  var fromCurr = "USD";
  var toCurr = "AUD";
  var wsdl = SoapService.wsdl("http://www.webservicex.net/CurrencyConvertor.asmx?WSDL");
  Logger.log(wsdl.getServiceNames());
  var currencyService = wsdl.getService("CurrencyConvertor");
  Logger.log(currencyService.getOperationNames());
  //var convertOp = currencyService.getOperation("ConversionRate");
  var param = Xml.element("ConversionRate", [
                                  Xml.attribute("xmlns", "http://www.webservicex.net/"),
                                  Xml.element("FromCurrency", [fromCurr]),
                                  Xml.element("ToCurrency", [toCurr])
             ]);
  var result = currencyService.invokeOperation("ConversionRate", [param]);

  return;
}
4

1 に答える 1

5

あなたはこれを気に入るはずです。私もかなり長い間困惑しました。

問題は、の属性でxmlns大文字と小文字が区別されることです。http://www.webservicex.net/正しいバージョンがであるときのようにそれを追加していましたhttp://www.webserviceX.NET/。最後にあることに注意してくださいX.NET

次の微調整されたバージョンは正常に機能するはずです(為替レートとして0.9602を使用してXMLをログに記録します)。

function getCurrencyConversion2(){
  var fromCurr = "USD";
  var toCurr = "AUD";
  var wsdl = SoapService.wsdl("http://www.webservicex.net/CurrencyConvertor.asmx?WSDL");
  var currencyService = wsdl.getService("CurrencyConvertor");
  var param = Xml.element("ConversionRate", [
                                  Xml.attribute("xmlns", "http://www.webserviceX.NET/"),
                                  Xml.element("FromCurrency", [fromCurr]),
                                  Xml.element("ToCurrency", [toCurr])
             ]);
  var result = currencyService.invokeOperation("ConversionRate", [param]);
  Logger.log(result.toXmlString());
  return;
}

これは、SOAPの複雑さと、このサービスが貴重なエラーメッセージを返さなかったという事実のために苦痛でした。

于 2012-11-13T06:58:54.010 に答える