wsdl soap请求中有多个元素的问题

Mar*_*rkB 4 google-apps-script

我在使用wsdl soap请求中的多个元素时遇到问题.当我直接在webservicex网站上尝试以下转换时,我获得当前的货币转换.当我尝试在app脚本中执行相同的操作时,它总是返回"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;
}
Run Code Online (Sandbox Code Playgroud)

Aru*_*jan 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;
}
Run Code Online (Sandbox Code Playgroud)

由于SOAP的复杂性以及此服务未返回有价值的错误消息这一事实,这很痛苦.