Я столкнулся с ошибкой:
Unable to create web service argument class [Lcom.verticalresponse.api._1_0.VRAPI_xsd.NVPair;. Error: java.lang.InstantiationException: [Lcom.verticalresponse.api._1_0.VRAPI_xsd.NVPair;. Often this is because the web service defines an abstract complexType as an input to an operation. You must create an actual instance of this type in Java.
при попытке вызвать веб-сервис. И сейчас у меня есть решение, и я хочу опубликовать его для всех, кто может оказаться в моей ситуации однажды. Проблема в том, что вам нужно передать сложную структуру через Coldfusion веб-сервису, и он не всегда любит играть хорошо.
Ответ на эту загадку заключается в том, как вы настраиваете данные как комбинацию структур и массивов.
вы должны построить данные очень специфическим способом.
<cfscript>
var ELMResults = StructNew();
var ELMArgs = StructNew();
var MemberData = arrayNew(1);
var ListMember = StructNew();
var session_id = 'the_session_id_provided'
var list_id = 'the_list_id_provided';
var list_name = 'the_list_name_provided';
var list_type = 'the_list_type_provided';
/* set session id */
ELMArgs.session_id = session_id;
/* set member data */
MemberData[1] = StructNew();
MemberData[1].name = "hash";
MemberData[1].value = hash_value;
MemberData[2] = StructNew();
MemberData[2].name = "optin_status";
MemberData[2].value = "2";
MemberData[3] = StructNew();
MemberData[3].name = "first_name";
MemberData[3].value = "Chewbacca";
MemberData[4] = StructNew();
MemberData[4].name = "fax";
MemberData[4].value = "1112223333";
MemberData[5] = StructNew();
MemberData[5].name = "email_address";
MemberData[5].value = email_address;
/* set list member details */
ListMember.list_id = list_id;
ListMember.list_name = list_name;
ListMember.list_type = list_type;
ListMember.member_data = MemberData;
ELMArgs.list_member = ListMember;
ELMResults = VR.editListMember(ELMArgs);
</cfscript>
Надеюсь, это кому-нибудь поможет, потому что я некоторое время чесал голову.