KSOAP: « org.ksoap2.serialization.SoapPrimitive » problème d'exception
-
26-10-2019 - |
Question
J'ai un problème tout en appelant le webservice, j'ai un service Web .NET dans le serveur et je suis en utilisant KSOAP (ksoap2-android-montage-2.5.7-jar-with-dependencies.jar) dans Android. Pendant l'exécution du programme que je suis une exception d'exécution nommé « org.ksoap2.serialization.SoapPrimitive ».
J'ai essayé avec les options que je readed dans le lien suivant: Comment appeler un Webservice .NET à partir d'Android en utilisant KSOAP2 et kSoap2 Android - classe Exception Cast (SoapObject) mais rien ne me aide
mon code:
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());
}
Où sectorX c'est un paramètre de chaîne que je donne à WS.
J'ai essayé le service Web sans paramètres et ça marche! Le problème est quand j'envoie le paramètre ... Je suppose que: /
La solution
Il ne fait pas exception de ce nom. Vous obtenez probablement une exception class cast. Si vous déboguez vous constaterez probablement que votre réponse est un SoapObject. Alors utilisez-vous getProperty ou getAttribute ou quoi que sur elle. Si vous définissez un point de pause, vous pourrez parcourir le graphe d'objets et d'assembler votre code d'analyse syntaxique manuellement ..
Peut-être le poster quelque part StackTrace ..
Autres conseils
Vous pouvez essayer d'utiliser seulement ' Objet au lieu d'utiliser 'SoapObject'. Ça marche pour moi. Espérons que cela aide.