0

J'essaye de consommer la réponse de SOAP xml en passant request xml dans une chaîne, en utilisant le plugin de Java Java pour Eclipse. J'ai été frappé par cela ces deux derniers jours à la recherche d'un moyen de le résoudre.Blackberry-ne pas obtenir la réponse de savon xml

J'ai joint l'exemple de code ci-dessous.

public String CheckXml() 
{ 
    final String requestXml="<SOAP:Envelope xmlns:SOAP=\"http://schemas.xmlsoap.org/soap/envelope/\"><header xmlns=\"http://schemas.cordys.com/General/1.0/\"></header><SOAP:Body><authenticateAgainstOID xmlns=\"http://schemas.cordys.com/OIDAuthentication\"><stringParam>HEMANTS_MUM013</stringParam><stringParam1>TATA2012</stringParam1></authenticateAgainstOID></SOAP:Body></SOAP:Envelope>"; 

    final String HOST_ADDRESS = "http://xyz.com/cordys/com.eibus.web.soap.Gateway.wcp?organization=o=B2C,cn=cordys,cn=cbop,o=tatamotors.com&SAMLart=MDFn+8e5dRDaRMRIwMY7nI84eEccbx+lIiV0VhsOQ7u+SKG6n5+WNB58"; 
    String result=""; 
    try { 
     HttpConnection url=(HttpConnection)Connector.open(HOST_ADDRESS); 
     url.setRequestProperty("Content-Type", "text/xml"); 
     url.setRequestMethod(HttpConnection.GET); 
     OutputStreamWriter writer=new OutputStreamWriter(url.openOutputStream()); 

     writer.write(requestXml); 
     writer.flush(); 
     writer.close(); 
     StringBuffer buffer1=new StringBuffer(); 

     InputStreamReader reader=new InputStreamReader(url.openInputStream()); 
     StringBuffer buffer=new StringBuffer(); 
     char[] cbuf=new char[2048]; 
     int num; 

     while (-1 != (num = reader.read(cbuf))) { 
      buffer.append(cbuf, 0, num); 
     } 

     String result1 = buffer.toString(); 
    } catch (Exception e) { 
     System.out.println(e); 
    } 
    return result; 
} 

Répondre

0

Je pense que la question principale que vous ne demandez pas http. getResponseCode(). Je pense que BB ne fait aucune interaction jusqu'à ce que vous l'appeliez.

Je serais également prudent avec ce code sur les périphériques réels. Rechercher une connexion d'ouverture correcte sur les BlackBerries.

+0

i ont essayé également de vérifier la connexion http, j'ai posté le code ici, si (url.getResponseCode() == HttpConnection.HTTP_OK) \t \t { \t \t \t InputStream fluxEntrée = url.openInputStream() ; \t \t \t buffer.append (IOUtilities.streamToBytes (inputStream)); \t \t \t résultat = buffer.toString(); \t \t \t \t \t} mais ca marche pas pour moi – Pramodhini

+0

Qu'est-ce que vous obtenez? Une exception? Peut-être que vous devez définir certains en-têtes d'accepter. Pourriez-vous renifler le client de bureau et vérifier les en-têtes qu'il envoie au serveur/Peut-être que vous devez changer la méthode de GET à POST. –

+0

Salut après avoir changé et vérifié tout le chemin encore maintenant je reçois la même erreur comme la classe ne se trouve pas près de la ligne inputstreamreader. – Pramodhini

0

J'ai remarqué que vous n'incluez pas l'en-tête SoapAction dans la demande.

Les services Web SOAP ont généralement une URL fixe et les différentes méthodes sont sélectionnées avec l'en-tête SoapAction. Vous pouvez vérifier l'en-tête en ouvrant le fichier WSDL dans un navigateur et en examinant le format de la méthode que vous souhaitez appeler.

Une fois que vous savez quelle action pour sélectionner, définir comme un en-tête régulier http:

url.setRequestProperty("SOAPAction", <your action here>); 

Une autre source de problèmes dans votre code est que vous utilisez l'ancienne classe HttpConnection qui nécessite l'ajout d'un suffixe à la URL en fonction du type de transport (MDS, BIS, Wi-Fi, etc.) Vous n'avez pas besoin d'utiliser cette classe héritée, sauf si vous ciblez OS 4.5 et moins. Alors jetez un oeil à ConnectionFactory classe, ce qui est beaucoup plus facile à utiliser. Il est disponible depuis OS 5.0.

+0

Salut j'ai essayé tous les facteurs, et ne suis même pas obtenir un résultat positif pour garder la prochaine étape. et aussi ce n'est pas un format de service wsdl.passing demande xml, reponse xml devrait venir dans un format de chaîne – Pramodhini

+0

Dans quelle ligne échoue-t-il? Quel type d'exception est lancé? –

+0

par le point de rupture je vérifie, il tombe dans inputstreamreader après qu'il jette la source non trouvée.wat simulateur à utiliser pour la version 5 OS. – Pramodhini