Создать абстрактный complexType в качестве входных данных для операции для класса аргумента веб-сервиса - Coldfusion - PullRequest
0 голосов
/ 27 апреля 2011

Я столкнулся с ошибкой:

 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>

Надеюсь, это кому-нибудь поможет, потому что я некоторое время чесал голову.

1 Ответ

1 голос
/ 13 мая 2011

Я нашел решение своего собственного вопроса и разместил его здесь с вопросом, потому что не смог опубликовать ответ в тот же день, когда задавал вопрос. Я сейчас просто закрываю тему. Я надеюсь, что этот ответ кому-то поможет, потому что я немного почесал голову этим.

Приветствия, JP

...