KSOAP: проблема исключения "org.ksoap2.serialization.SoapPrimitive" - PullRequest
1 голос
/ 25 июля 2011

У меня проблема при вызове веб-службы, у меня есть веб-служба .NET на сервере, и я использую KSOAP (ksoap2-android-assembly-2.5.7-jar-with-dependencies.jar) в Android.Во время работы программы я получил исключение времени выполнения с именем "org.ksoap2.serialization.SoapPrimitive".

Я попытался с опциями, которые я прочитал по ссылке: Как вызвать .NET Webservice из Androidиспользуя KSOAP2? и kSoap2 Android - исключение класса Cast (SoapObject) , но ничто не помогает мне

Этот мой код:

try{
            //Conexión a Web Service
            SoapObject Solicitud = new SoapObject(NAMESPACE, METODO);

            PropertyInfo sector = new PropertyInfo();
            sector.setName("sector");
            sector.setValue(sectorX.toString());
            Solicitud.addProperty(sector);

            SoapSerializationEnvelope Envoltorio = new SoapSerializationEnvelope (SoapEnvelope.VER12);
            Envoltorio.dotNet = true;

            Envoltorio.setOutputSoapObject (Solicitud);

            HttpTransportSE TransporteHttp = new HttpTransportSE(URL);
            TransporteHttp.call (SOAP_ACTION, Envoltorio);

          //Obtencion de datos
            SoapObject resultado = (SoapObject)Envoltorio.getResponse();

            final String[] testValues = new String[resultado.getPropertyCount()];
            final Number[] serie = new Number[resultado.getPropertyCount()];

            for(int i= 0; i< resultado.getPropertyCount(); i++){
                String x = ""; 
                SoapObject wii = (SoapObject)resultado.getProperty(i);
                x += wii.getPropertyAsString(1);                
                testValues[i] = wii.getPropertyAsString(1);
                x.trim();
                serie[i]=Integer.parseInt(x);
            }

        ArrayAdapter<String> adaptador = new ArrayAdapter<String>(this, R.layout.lista_sectores, testValues);
        final ListView LstOpciones = (ListView) findViewById(R.id.LstOpciones);
        LstOpciones.setAdapter(adaptador);

        LstOpciones.setOnItemClickListener(new AdapterView.OnItemClickListener() {

            @Override
            public void onItemClick(AdapterView<?> parent, View itemClicked,
                    int position, long id) {
                // TODO Auto-generated method stub
                TextView textview = (TextView)itemClicked;
                String strText = textview.getText().toString(); 
                seleccion.setText("Seleccionado: " + strText);

            } catch (Exception e){
        txtMensaje.setText(e.getMessage());
            }

Где sectorX этоСтроковый параметр, который я даю WS.

Я попробовал веб-сервис без параметров и работает!Проблема в том, когда я отправляю параметр ... Я думаю: /

Ответы [ 2 ]

1 голос
/ 25 июля 2011

Нет исключений для этого имени.Вы, вероятно, получите исключение приведения класса.Если вы выполните отладку, вы, вероятно, обнаружите, что ваш ответ является SoapObject.Итак, вы используете getProperty или getAttribute или что-то еще.ЕСЛИ вы установили точку останова, вы сможете просматривать граф объектов и собирать код разбора вручную.

Может быть, где-нибудь опубликовать трассировку стека ..

0 голосов
/ 30 августа 2013

Вы можете попробовать использовать только ' Object ' вместо 'SoapObject'. Меня устраивает. Надеюсь, это поможет.

...