J'ai le code d'application Android suivant ci-dessous. J'essaie de vous connecter à un service Web via HTTP. Le service Web utilise Apache Axis. Cependant, je rencontre l'erreur "Erreur de lecture de xmlstreamreader" dans la réponse. Je suis vraiment coincé et je ne suis pas sûr de ce que je peux faire. Pourrait-il être qu'il existe différentes versions du client HTTP et que le savon étant utilisé sur le serveur et le côté client ?? Toute aide sur cela serait grandement appréciée. Le service Web est très simple: la méthode Sayhello affiche l'argument donné dans arg0 = quelque_string
3 Réponses :
Votre demande WebService n'est pas construite correctement. Vous créez une demande de formulaire et non une demande de savon réelle.
Une demande de savon est un document XML qui a une enveloppe et un corps Voir exemple ici Savon Exemple sur Wikipedia . P>
Ce que vous faites réellement ici est un appel HTTP standard qui émule un formulaire de soumission et non un appel de savon. P>
Vous avez deux solutions ici: p>
1- Vous pouvez soit émuler le comportement d'un client SOAP en créant manuellement le document XML et en le soumettant.
En plus de définir le document XML approprié comme le corps de la demande, n'oubliez pas de définir les en-têtes appropriés: RequestEntity requestEntity = new StringRequestEntity("<?xml version=\"1.0\"?><soap:Envelope xmlns:soap=\"http://www.w3.org/2003/05/soap-envelope\"><soap:Header></soap:Header><soap:Body><m:GetStockPrice xmlns:m=\"http://www.example.org/stock\"><m:StockName>IBM</m:StockName></m:GetStockPrice></soap:Body></soap:Envelope>");
post.setRequestEntity(requestEntity );
Shoukry K a raison. Vous avez fait une demande de post HTTP. Ce n'est pas un webservice de savon. Si vous voulez savoir comment appeler un service Web, suivez le lien. http://www.youtube.com/watch?v=v9eowbvgwso . Assurez-vous de télécharger le dernier fichier KSOAP JAR. p>
échantillon de code à l'aide de K-SOAP pour Android.
public static String getSoapBase64String(DamageAssessmentFormPojo pojo) { XmlSerializer xmlSerializer = Xml.newSerializer(); StringWriter writer = new StringWriter(); try { xmlSerializer.setOutput(writer); xmlSerializer.startDocument("UTF-8", true); xmlSerializer.startTag("", XMLTags.TAG_ROD); xmlSerializer.startTag("", XMLTags.TAG_ORDER); xmlSerializer.startTag("", XMLTags.TAG_SEVERITY); xmlSerializer.text(pojo.getCheckedSeverity_Complexity()); xmlSerializer.endTag("", XMLTags.TAG_SEVERITY); xmlSerializer.startTag("", XMLTags.TAG_DAMAGE_TYPE); StringBuilder builder = new StringBuilder(); for (String str : pojo.getCheckedDamageTypes()) { builder.append(str + " , "); } xmlSerializer.text(builder.toString()); xmlSerializer.endTag("", XMLTags.TAG_DAMAGE_TYPE); xmlSerializer.startTag("", XMLTags.TAG_ENV_IMPACT); xmlSerializer.text(pojo.getCheckedEnvImpact()); xmlSerializer.endTag("", XMLTags.TAG_ENV_IMPACT); xmlSerializer.startTag("", XMLTags.TAG_ENV_COMMENT); xmlSerializer.text(pojo.getEnvImpactComments()); xmlSerializer.endTag("", XMLTags.TAG_ENV_COMMENT); xmlSerializer.startTag("", XMLTags.TAG_TRAVEL_CONDITION); xmlSerializer.text(pojo.getCheckedTravelCond()); xmlSerializer.endTag("", XMLTags.TAG_TRAVEL_CONDITION); xmlSerializer.startTag("", XMLTags.TAG_TRAVEL_COMMENT); xmlSerializer.text(pojo.getTravCondComments()); xmlSerializer.endTag("", XMLTags.TAG_TRAVEL_COMMENT); xmlSerializer.startTag("", XMLTags.TAG_ORDER_DATE); xmlSerializer.text(pojo.getDateTime()); xmlSerializer.endTag("", XMLTags.TAG_ORDER_DATE); xmlSerializer.endTag("", "Order"); xmlSerializer.endTag("", "ROD"); xmlSerializer.endDocument(); } catch (IllegalArgumentException e) { Logger.logException(e); } catch (IllegalStateException e) { Logger.logException(e); } catch (IOException e) { Logger.logException(e); } return Base64.encode(writer.toString().getBytes()); }
lalit3686.blogspot.in/2012/06/ ...