2010-11-12 5 views
3

Salut à tous, je vais avoir un petit problème avec ksoap2 et obtenir la réponse j'ai le code suivant sur le côté client Blackberry:problème avec réponse Ksoap2

private boolean AddVoiceNote() 
{ 
    _webMethod = "AddVoiceNote"; 
    _soapAction.concat(_webMethod); 
    Boolean response = null; 

    SoapObject methodCall = new SoapObject(_serviceNameSpace, _webMethod); 
    SoapSerializationEnvelope soapEnvelope = new SoapSerializationEnvelope(SoapEnvelope.VER11); 

    soapEnvelope.bodyOut = methodCall; 
    soapEnvelope.dotNet = false; 
    soapEnvelope.encodingStyle = SoapSerializationEnvelope.XSD; 
    soapEnvelope.setOutputSoapObject(methodCall); 

    methodCall.addProperty("name", _voiceNote.get_nombre()); 
    methodCall.addProperty("comment", _voiceNote.get_comentario()); 
    methodCall.addProperty("audio", Base64.encode(_voiceNote.get_audioArray())); 
    methodCall.addProperty("id", String.valueOf(_voiceNote.get_userId())); 
    methodCall.addProperty("postTwitter", String.valueOf(_voiceNote.is_twitterPost())); 
    methodCall.addProperty("postFacebook", String.valueOf(_voiceNote.is_facebookPost())); 

    HttpTransport transport = new HttpTransport(_serviceURL); 

    transport.setXmlVersionTag("<?xml version=\"1.0\" encoding=\"UTF-8\"?>"); 
    try { 

     transport.call(_soapAction, soapEnvelope); 
     SoapObject responseSoap = (SoapObject)soapEnvelope.getResponse(); 
     response = (Boolean)responseSoap.getProperty("return"); 
     System.out.println(responseSoap.toString()); 
     return response.booleanValue(); 
    } catch (IOException e) { 
     return false; 
    } catch (XmlPullParserException e) { 
     return false; 
    } 

} 

Et ceci est la méthode web, il appelle:

@WebMethod(operationName = "AddVoiceNote") 
public Boolean AddVoiceNote(
@WebParam(name = "name")String name, 
@WebParam(name = "comment")String comment, 
@WebParam(name = "audio")String audio, 
@WebParam(name = "id")String id, 
@WebParam(name = "postTwitter")String postTwitter, 
@WebParam(name = "postFacebook")String postFacebook) 
{ 
    VoiceNote voiceNote = new VoiceNote(); 
    VoiceNoteMananger voiceNoteManager = new VoiceNoteMananger(); 

    voiceNote.setComentario(comment); 
    voiceNote.setNombre(name); 
    voiceNote.setIdUser(Long.parseLong(id)); 
    voiceNote.setFacebookPost(Boolean.getBoolean(postFacebook)); 
    voiceNote.setTwitterPost(Boolean.parseBoolean(postTwitter)); 
    voiceNote.setTrack(audio.getBytes()); 

    return voiceNoteManager.addVoiceNote(voiceNote); 
} 

le problème que je vais avoir est bien obtenir la réponse, je reçois un ClassCastException en essayant de l'obtenir et le débogueur juste sort de la méthode, toute idée comment je peux résoudre ce problème? Oh est ici aussi le xml de réponse que je reçois de mon Web Méthode:

<?xml version='1.0' encoding='UTF-8'?> 
<S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/"> 
<S:Body><ns2:AddVoiceNoteResponse xmlns:ns2="http://WebService/"> 
    <return>true</return></ns2:AddVoiceNoteResponse> 
</S:Body> 
</S:Envelope> 
+0

Quel est le ClassCastException? –

+0

arrive sur cette ligne SoapObject responseSoap = (SoapObject) soapEnvelope.getResponse(); dit juste ClassCastException – 8vius

+0

Après avoir changé la distribution de SoapObject à l'objet y notez que getResponse() est null T_T – 8vius

Répondre

0

Désolé, je n'ai pas le privilège d'écrire des commentaires, sinon je ne serais pas poster une réponse pour ce petit soupçon ...

En fait, l'enveloppe a une méthode "stringToBoolean". Here's a link to the method in the API.

Salutations

Questions connexes