Soap Yodlee聚合API中带有“FieldInfoChoice”元素的登录表单的正确XML格式是什么

Soap Yodlee聚合API中带有“FieldInfoChoice”元素的登录表单的正确XML格式是什么,soap,yodlee,Soap,Yodlee,我们正在构建一个使用Yodlee数据的聚合应用程序,虽然我们工作的大多数机构都有登录表单,其中包含一系列需要信息的字段,但有一个机构储蓄计划,即Content Service ID 4479,它有一个FieldInfoChoice元素,其中提供了两个字段供选择。在尝试测试和处理这个问题时,我们使用了Java示例应用程序Aggregation12,这是迄今为止我们作为所有其他Yodlee SOAP交互的实现示例使用的,我们发现了它 当尝试使用控制台应用程序yconsole.sh向用户添加节俭储蓄计

我们正在构建一个使用Yodlee数据的聚合应用程序,虽然我们工作的大多数机构都有登录表单,其中包含一系列需要信息的字段,但有一个机构储蓄计划,即Content Service ID 4479,它有一个FieldInfoChoice元素,其中提供了两个字段供选择。在尝试测试和处理这个问题时,我们使用了Java示例应用程序Aggregation12,这是迄今为止我们作为所有其他Yodlee SOAP交互的实现示例使用的,我们发现了它

当尝试使用控制台应用程序yconsole.sh向用户添加节俭储蓄计划帐户时,初始登录永远无法向我们提供输出,而是在生成登录信息提示之前出现错误。访问日志中的XML如下所示:

=======================================================
= Elapsed: 515 milliseconds
= In message: <?xml version="1.0" encoding="UTF-8"?><soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><soapenv:Body><getLoginFormForContentService xmlns="http://itemmanagement.accountmanagement.core.soap.yodlee.com"><cobrandContext xsi:type="ns1:UserContext" xmlns="" xmlns:ns1="http://common.soap.yodlee.com"><cobrandId xsi:type="xsd:long">10008392</cobrandId><channelId xsi:type="xsd:long">-1</channelId><locale xsi:type="ns2:Locale" xmlns:ns2="http://collections.soap.yodlee.com"><country xsi:type="xsd:string">US</country><language xsi:type="xsd:string">en</language><variant xsi:type="xsd:string"></variant></locale><tncVersion xsi:type="xsd:long">2</tncVersion><applicationId xsi:type="xsd:string">7A318B9CD555B6A3FF82D22CBF3C9F00</applicationId><cobrandConversationCredentials xsi:type="ns3:SessionCredentials" xmlns:ns3="http://login.ext.soap.yodlee.com"><sessionToken xsi:type="xsd:string">10122012_0:90da6f12012f755cfe402d5c72a39086e476df0913209ad6e021120fcf0434c132888648c296a3521f0f6eab3bf76b39018be8bb89278e897ad905e0c10d6288</sessionToken></cobrandConversationCredentials><preferenceInfo xsi:type="ns1:PreferenceInfo"><currencyCode xsi:type="xsd:string">USD</currencyCode><timeZone xsi:type="xsd:string">PST</timeZone><dateFormat xsi:type="xsd:string">MM/dd/yyyy</dateFormat><currencyNotationType xsi:type="ns1:CurrencyNotation">SYMBOL_NOTATION</currencyNotationType><numberFormat xsi:type="ns1:NumberFormat"><decimalSeparator xsi:type="xsd:string">.</decimalSeparator><groupingSeparator xsi:type="xsd:string">,</groupingSeparator><groupPattern xsi:type="xsd:string">###,##0.##</groupPattern></numberFormat></preferenceInfo><fetchAllLocaleData xsi:type="xsd:boolean">false</fetchAllLocaleData><conversationCredentials xsi:type="ns4:SessionCredentials" xmlns:ns4="http://login.ext.soap.yodlee.com"><sessionToken xsi:type="xsd:string">10122012_0:d0f5fdbed4521f52da62dd5b161885c4a6a45ecd6025a4225d026ef39c8b8e662bcf07f0db6dea2c177446e87e11915ffecf1332dbe8645a0655d9f5b4d4940b</sessionToken></conversationCredentials><valid xsi:type="xsd:boolean">true</valid><isPasswordExpired xsi:type="xsd:boolean">false</isPasswordExpired></cobrandContext><contentServiceId xmlns="">4479</contentServiceId></getLoginFormForContentService></soapenv:Body></soapenv:Envelope>
= Out message: <?xml version='1.0' encoding='utf-8'?><soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"><soapenv:Body><ns27:getLoginFormForContentServiceResponse xmlns:ns27="http://itemmanagement.accountmanagement.core.soap.yodlee.com"><getLoginFormForContentServiceReturn xmlns:ns4="http://common.soap.yodlee.com" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="ns4:Form"><conjunctionOp>AND</conjunctionOp><componentList><elements xsi:type="ns4:FieldInfoChoice"><fieldInfoList><elements xsi:type="ns4:FieldInfoMultiFixed"><name>TSP Account Number (13 Digit)</name><displayName>TSP Account Number (13 Digit)</displayName><isEditable>true</isEditable><isOptional>true</isOptional><isEscaped>false</isEscaped><helpText>134201</helpText><isOptionalMFA>false</isOptionalMFA><isMFA>false</isMFA><defaultValues><elements xsi:nil="1" /><elements xsi:nil="1" /><elements xsi:nil="1" /></defaultValues><values><elements xsi:nil="1" /><elements xsi:nil="1" /><elements xsi:nil="1" /></values><validValues><elements xsi:nil="1" /><elements xsi:nil="1" /><elements xsi:nil="1" /></validValues><displayValidValues><elements xsi:nil="1" /><elements xsi:nil="1" /><elements xsi:nil="1" /></displayValidValues><valueIdentifiers><elements>OP_LOGIN</elements><elements>OP_LOGIN1</elements><elements>OP_LOGIN2</elements></valueIdentifiers><valueMasks><elements>LOGIN_FIELD</elements><elements>LOGIN_FIELD</elements><elements>LOGIN_FIELD</elements></valueMasks><fieldTypes><elements>LOGIN</elements><elements>LOGIN</elements><elements>LOGIN</elements></fieldTypes><validationRules><elements xsi:nil="1" /><elements xsi:nil="1" /><elements xsi:nil="1" /></validationRules><sizes><elements>20</elements><elements>20</elements><elements>20</elements></sizes><maxlengths><elements>4</elements><elements>4</elements><elements>5</elements></maxlengths><userProfileMappingExpressions><elements xsi:nil="1" /><elements xsi:nil="1" /><elements xsi:nil="1" /></userProfileMappingExpressions></elements><elements xsi:type="ns4:FieldInfoSingle"><name>OP_LOGIN3</name><displayName>User ID</displayName><isEditable>true</isEditable><isOptional>true</isOptional><isEscaped>false</isEscaped><helpText>134200</helpText><isOptionalMFA>false</isOptionalMFA><isMFA>false</isMFA><valueIdentifier>OP_LOGIN3</valueIdentifier><valueMask>LOGIN_FIELD</valueMask><fieldType>LOGIN</fieldType><size>20</size><maxlength>40</maxlength><fieldErrorCode xsi:nil="1" /></elements></fieldInfoList></elements><elements xsi:type="ns4:FieldInfoSingle"><name>PASSWORD</name><displayName>8-character Web Password</displayName><isEditable>true</isEditable><isOptional>false</isOptional><isEscaped>false</isEscaped><helpText>134205</helpText><isOptionalMFA>false</isOptionalMFA><isMFA>false</isMFA><valueIdentifier>PASSWORD</valueIdentifier><valueMask>LOGIN_FIELD</valueMask><fieldType>PASSWORD</fieldType><size>20</size><maxlength>8</maxlength><fieldErrorCode xsi:nil="1" /></elements></componentList><defaultHelpText>3043</defaultHelpText></getLoginFormForContentServiceReturn></ns27:getLoginFormForContentServiceResponse></soapenv:Body></soapenv:Envelope>
=======================================================
控制台应用程序的输出如下:

********************
Choice: 9

ITEM MANAGEMENT
********************
1. View Items
2. View Item
3. Dump Item
4. Add Item (Includes MFA)
5. Edit Item
6. Remove Item
7. Refresh Item
8. Refresh All
0. Exit Sub-menu
********************
Choice: 4

Enter Content ServiceId: 4479
Total time take to fetch the login form(in millis) - 786
java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to [Lcom.yodlee.soap.common.FieldInfo;
at     com.yodlee.sampleapps.helper.FormFieldsVisitor.populateQueue(FormFieldsVisitor.java:115)
at com.yodlee.sampleapps.helper.FormFieldsVisitor.<init>(FormFieldsVisitor.java:59)
at com.yodlee.sampleapps.helper.FormUtil.getUserInputFieldInfoList(FormUtil.java:353)
at com.yodlee.sampleapps.item.AddItem.doAddItem(AddItem.java:97)
at com.yodlee.sampleapps.YodleeConsole.addItem(YodleeConsole.java:314)
at com.yodlee.sampleapps.YodleeConsole.itemManagementMenu(YodleeConsole.java:174)
at com.yodlee.sampleapps.YodleeConsole.loop(YodleeConsole.java:529)
at com.yodlee.sampleapps.YodleeConsole.main(YodleeConsole.java:574)
因此,有两个问题:

1此错误的来源是什么?如果没有java示例应用程序如何与这种类型的登录表单一起工作的示例,则很难在我们的应用程序中正确处理它

2您能为我们提供一个填写此表格时应返回的XML格式示例吗?因为我们可以合理地假设,它与提交我们已经成功合作的所有其他机构的填写字段不同。

@EthanVisitei-

以下是你的问题的答案

似乎FormFieldsVisitor.java中的示例应用程序代码中存在一些问题,我建议您在方法populateQueueForm中进行这些更改。 错误代码:

我们将在SampleApps中更正此问题

下面是您需要的示例响应

<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://login.ext.soap.yodlee.com" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ns2="http://common.soap.yodlee.com" xmlns:ns3="http://itemmanagement.accountmanagement.core.soap.yodlee.com" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    <SOAP-ENV:Body>
    <ns3:addItemForContentService1>
    <userContext>
    <cobrandId>xxxxxxxxxxxxxxx</cobrandId>
    <channelId>-1</channelId>
    <locale>
    <country>US</country>
    <language>en</language>
    <variant/>
            </locale>
            <tncVersion>2</tncVersion>
            <applicationId>xxxxxxxxxxxxxxxxxxxxxx</applicationId>
            <cobrandConversationCredentials xsi:type="ns1:SessionCredentials">
              <sessionToken>xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx</sessionToken>
            </cobrandConversationCredentials>
            <preferenceInfo>
              <currencyCode>USD</currencyCode>
              <timeZone>PST</timeZone>
              <dateFormat>MM/dd/yyyy</dateFormat>
              <currencyNotationType>SYMBOL_NOTATION</currencyNotationType>
              <numberFormat>
                <decimalSeparator>.</decimalSeparator>
                <groupingSeparator>,</groupingSeparator>
                <groupPattern>###,##0.##</groupPattern>
              </numberFormat>
            </preferenceInfo>
            <fetchAllLocaleData>false</fetchAllLocaleData>
            <conversationCredentials xsi:type="ns1:SessionCredentials">
              <sessionToken>xxxxxxxxxxxxxxxxxxxxxxxxxxx</sessionToken>
            </conversationCredentials>
            <valid>true</valid>
            <isPasswordExpired>false</isPasswordExpired>
          </userContext>
          <contentServiceId>4479</contentServiceId>
          <credentialFields>
            <elements xsi:type="ns2:FieldInfoMultiFixed">
              <name>TSP Account Number (13 Digit)</name>
              <displayName>TSP Account Number (13 Digit)</displayName>
              <isEditable>true</isEditable>
              <isOptional>true</isOptional>
              <isEscaped>false</isEscaped>
              <helpText>134201</helpText>
              <isOptionalMFA>false</isOptionalMFA>
              <isMFA>false</isMFA>
              <defaultValues/>
              <values>
                <elements>1234567</elements>
                <elements>8765</elements>
                <elements>78923</elements>
              </values>
              <validValues/>
              <displayValidValues/>
              <valueIdentifiers>
                <elements>OP_LOGIN</elements>
                <elements>OP_LOGIN1</elements>
                <elements>OP_LOGIN2</elements>
              </valueIdentifiers>
              <valueMasks>
                <elements>LOGIN_FIELD</elements>
                <elements>LOGIN_FIELD</elements>
                <elements>LOGIN_FIELD</elements>
              </valueMasks>
              <fieldTypes>
                <elements>LOGIN</elements>
                <elements>LOGIN</elements>
                <elements>LOGIN</elements>
              </fieldTypes>
              <validationRules/>
              <sizes>
                <elements>20</elements>
                <elements>20</elements>
                <elements>20</elements>
              </sizes>
              <maxlengths>
                <elements>4</elements>
                <elements>4</elements>
                <elements>5</elements>
              </maxlengths>
              <userProfileMappingExpressions/>
            </elements>
            <elements xsi:type="ns2:FieldInfoSingle">
              <name>OP_LOGIN3</name>
              <displayName>User ID</displayName>
              <isEditable>true</isEditable>
              <isOptional>true</isOptional>
              <isEscaped>false</isEscaped>
              <helpText>134200</helpText>
              <isOptionalMFA>false</isOptionalMFA>
              <isMFA>false</isMFA>
              <value>apoorv123</value>
              <valueIdentifier>OP_LOGIN3</valueIdentifier>
              <valueMask>LOGIN_FIELD</valueMask>
              <fieldType>LOGIN</fieldType>
              <size>20</size>
              <maxlength>40</maxlength>
            </elements>
            <elements xsi:type="ns2:FieldInfoSingle">
              <name>PASSWORD</name>
              <displayName>8-character Web Password</displayName>
              <isEditable>true</isEditable>
              <isOptional>false</isOptional>
              <isEscaped>false</isEscaped>
              <helpText>134205</helpText>
              <isOptionalMFA>false</isOptionalMFA>
              <isMFA>false</isMFA>
              <value>09876tyqw</value>
              <valueIdentifier>PASSWORD</valueIdentifier>
              <valueMask>LOGIN_FIELD</valueMask>
              <fieldType>PASSWORD</fieldType>
              <size>20</size>
              <maxlength>8</maxlength>
            </elements>
            <elements xsi:type="ns2:FieldInfoSingle">
              <name/>
              <displayName>Verify 8-character Web Password</displayName>
              <isEditable>true</isEditable>
              <isOptional>false</isOptional>
              <isEscaped>false</isEscaped>
              <helpText>134205</helpText>
              <isOptionalMFA>false</isOptionalMFA>
              <isMFA>false</isMFA>
              <value>09876tyqw</value>
              <valueIdentifier>PASSWORD</valueIdentifier>
              <valueMask>LOGIN_FIELD</valueMask>
              <fieldType>PASSWORD</fieldType>
              <size>20</size>
              <maxlength>8</maxlength>
            </elements>
          </credentialFields>
          <shareCredentialsWithinSite>false</shareCredentialsWithinSite>
          <startRefreshItemOnAddition>false</startRefreshItemOnAddition>
        </ns3:addItemForContentService1>
      </SOAP-ENV:Body>
    </SOAP-ENV:Envelope>

非常感谢!这应该会有很大帮助。
        Object[] fieldInfoArray = null;                    
        if (fieldInfos != null) {
                        fieldInfoArray = (Object[])fieldInfos.getElements();
        }              
        for(int j = 0; j < fieldInfoArray.length; j++) {
                        populateQueue((FieldInfo)fieldInfoArray[j]);
                        if(j > 0) {
                                        needsLittleOr.add((FieldInfo)fieldInfoArray[j]);
                        }
        }
FormUtil.writeFormHtml(userContext, itemId,
                getLoginFormCredentialsForItem(userContext, itemId), false,
                "FilledForm");
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://login.ext.soap.yodlee.com" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ns2="http://common.soap.yodlee.com" xmlns:ns3="http://itemmanagement.accountmanagement.core.soap.yodlee.com" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    <SOAP-ENV:Body>
    <ns3:addItemForContentService1>
    <userContext>
    <cobrandId>xxxxxxxxxxxxxxx</cobrandId>
    <channelId>-1</channelId>
    <locale>
    <country>US</country>
    <language>en</language>
    <variant/>
            </locale>
            <tncVersion>2</tncVersion>
            <applicationId>xxxxxxxxxxxxxxxxxxxxxx</applicationId>
            <cobrandConversationCredentials xsi:type="ns1:SessionCredentials">
              <sessionToken>xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx</sessionToken>
            </cobrandConversationCredentials>
            <preferenceInfo>
              <currencyCode>USD</currencyCode>
              <timeZone>PST</timeZone>
              <dateFormat>MM/dd/yyyy</dateFormat>
              <currencyNotationType>SYMBOL_NOTATION</currencyNotationType>
              <numberFormat>
                <decimalSeparator>.</decimalSeparator>
                <groupingSeparator>,</groupingSeparator>
                <groupPattern>###,##0.##</groupPattern>
              </numberFormat>
            </preferenceInfo>
            <fetchAllLocaleData>false</fetchAllLocaleData>
            <conversationCredentials xsi:type="ns1:SessionCredentials">
              <sessionToken>xxxxxxxxxxxxxxxxxxxxxxxxxxx</sessionToken>
            </conversationCredentials>
            <valid>true</valid>
            <isPasswordExpired>false</isPasswordExpired>
          </userContext>
          <contentServiceId>4479</contentServiceId>
          <credentialFields>
            <elements xsi:type="ns2:FieldInfoMultiFixed">
              <name>TSP Account Number (13 Digit)</name>
              <displayName>TSP Account Number (13 Digit)</displayName>
              <isEditable>true</isEditable>
              <isOptional>true</isOptional>
              <isEscaped>false</isEscaped>
              <helpText>134201</helpText>
              <isOptionalMFA>false</isOptionalMFA>
              <isMFA>false</isMFA>
              <defaultValues/>
              <values>
                <elements>1234567</elements>
                <elements>8765</elements>
                <elements>78923</elements>
              </values>
              <validValues/>
              <displayValidValues/>
              <valueIdentifiers>
                <elements>OP_LOGIN</elements>
                <elements>OP_LOGIN1</elements>
                <elements>OP_LOGIN2</elements>
              </valueIdentifiers>
              <valueMasks>
                <elements>LOGIN_FIELD</elements>
                <elements>LOGIN_FIELD</elements>
                <elements>LOGIN_FIELD</elements>
              </valueMasks>
              <fieldTypes>
                <elements>LOGIN</elements>
                <elements>LOGIN</elements>
                <elements>LOGIN</elements>
              </fieldTypes>
              <validationRules/>
              <sizes>
                <elements>20</elements>
                <elements>20</elements>
                <elements>20</elements>
              </sizes>
              <maxlengths>
                <elements>4</elements>
                <elements>4</elements>
                <elements>5</elements>
              </maxlengths>
              <userProfileMappingExpressions/>
            </elements>
            <elements xsi:type="ns2:FieldInfoSingle">
              <name>OP_LOGIN3</name>
              <displayName>User ID</displayName>
              <isEditable>true</isEditable>
              <isOptional>true</isOptional>
              <isEscaped>false</isEscaped>
              <helpText>134200</helpText>
              <isOptionalMFA>false</isOptionalMFA>
              <isMFA>false</isMFA>
              <value>apoorv123</value>
              <valueIdentifier>OP_LOGIN3</valueIdentifier>
              <valueMask>LOGIN_FIELD</valueMask>
              <fieldType>LOGIN</fieldType>
              <size>20</size>
              <maxlength>40</maxlength>
            </elements>
            <elements xsi:type="ns2:FieldInfoSingle">
              <name>PASSWORD</name>
              <displayName>8-character Web Password</displayName>
              <isEditable>true</isEditable>
              <isOptional>false</isOptional>
              <isEscaped>false</isEscaped>
              <helpText>134205</helpText>
              <isOptionalMFA>false</isOptionalMFA>
              <isMFA>false</isMFA>
              <value>09876tyqw</value>
              <valueIdentifier>PASSWORD</valueIdentifier>
              <valueMask>LOGIN_FIELD</valueMask>
              <fieldType>PASSWORD</fieldType>
              <size>20</size>
              <maxlength>8</maxlength>
            </elements>
            <elements xsi:type="ns2:FieldInfoSingle">
              <name/>
              <displayName>Verify 8-character Web Password</displayName>
              <isEditable>true</isEditable>
              <isOptional>false</isOptional>
              <isEscaped>false</isEscaped>
              <helpText>134205</helpText>
              <isOptionalMFA>false</isOptionalMFA>
              <isMFA>false</isMFA>
              <value>09876tyqw</value>
              <valueIdentifier>PASSWORD</valueIdentifier>
              <valueMask>LOGIN_FIELD</valueMask>
              <fieldType>PASSWORD</fieldType>
              <size>20</size>
              <maxlength>8</maxlength>
            </elements>
          </credentialFields>
          <shareCredentialsWithinSite>false</shareCredentialsWithinSite>
          <startRefreshItemOnAddition>false</startRefreshItemOnAddition>
        </ns3:addItemForContentService1>
      </SOAP-ENV:Body>
    </SOAP-ENV:Envelope>