【问题标题】:Soap API error - incorrect type?Soap API 错误 - 类型不正确?
【发布时间】:2011-09-11 13:47:07
【问题描述】:

我目前正在尝试使用在我的浏览器中运行良好的 API - 我的代码如下:

function getHistory() {

  var wsdl = SoapService.wsdl("http://zulutrade.com/WebServices/Performance.asmx?WSDL");

  var performanceService = wsdl.getService("PerformanceWebService");

  var param = Xml.element("GetProviderTrades", [
                Xml.attribute("xmlns", "ZuluTrade.WebServices"),
                Xml.element("length",["100"]),
                Xml.element("sortBy",["dc"]),
                Xml.element("sortAscending",[false]),
                Xml.element("providerId",["24508"]),
                Xml.element("currencyIds",["[]"]),
                Xml.element("fromDateStr",["1984-04-24"]),
                Xml.element("toDateStr",["2011-09-10"]),
                Xml.element("validTrades",[true]),
                Xml.element("lotSize",["2"])
              ]);

  //var envelope = performanceService.getSoapEnvelope("GetProviderTrades", param)
  //Logger.log(envelope);

  var result = performanceService.GetProviderTrades(param);

  Logger.log(result);
}

这似乎正在连接到服务,但正在生成错误:

http://zulutrade.com/WebServices/Performance.asmx 的请求失败,返回代码 500。服务器响应:soap:ClientServer 无法读取请求。 ---> XML 文档中存在错误 (1, 640)。 ---> 实例验证错误:“2”不是 LotSize 的有效值。 (第 26 行)

为了设置每个参数,我在访问页面时从 Chrome 的开发人员工具中准确复制了有效负载(转到 http://www.zulutrade.com/TradeHistoryIndividual.aspx?pid=24508 并在查看 XHR 请求以查看有效负载时更改可见交易的数量)。由于我已将 lotSize 设置为 2,因此根据浏览器请求中的有效负载,我本以为这会起作用,但显然没有。

查看http://zulutrade.com/WebServices/Performance.asmx?WSDL 的架构,我可以看到lotSize 的以下内容:

<s:element minOccurs="1" maxOccurs="1" name="lotSize" type="tns:LotSize"/>

这看起来像是 tns:LotSize 类型 - 这就是我收到错误的原因吗?如果是这样,我怎样才能在我的请求中传递这种类型的东西?

谢谢!

【问题讨论】:

    标签: javascript jquery api soap


    【解决方案1】:

    来自 WSDL 的 afaik 你可以看到

    <s:simpleType name="LotSize">
        <s:restriction base="s:string">
            <s:enumeration value="Micro"/>
            <s:enumeration value="Mini"/>
            <s:enumeration value="Standard"/>
        </s:restriction>
    </s:simpleType>
    

    所以lotSize可以

    Xml.element("lotSize","Mini") // 2nd value, instead of ["2"]
    

    【讨论】:

      猜你喜欢
      • 2023-03-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-07-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多