2011-09-11 46 views
0

我目前正在消耗是工作在我的浏览精细的API - 我的代码如下:Soap 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。服务器响应: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 - 这是为什么我收到错误?如果是这样,我如何在我的请求中传递这种类型的东西?

谢谢!

回答

1

据我所知,从WSDL可以看出

<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"] 
+1

感谢,貌似已经奏效。 –

+0

很高兴帮助你:-) –

相关问题