ksoap2 org.xmlpull.v1.xmlpullparserexception erreur start_tag attendue
Ci-dessous mon code, que j'ai écrit pour valider la connexion de l'utilisateur dans les informations d'identification. Le service web écrite à l'aide .net
private static final String SOAP_ACTION = "http://tempuri.org/getCredentials";
private static final String OPERATION_NAME = "getCredentials";
private static final String WSDL_TARGET_NAMESPACE = "http://tempuri.org/";
private static final String SOAP_ADDRESS = "http://myStaticIP:portNo/WebSiteName/CommunicationInterface.asmx";
SoapObject request = new SoapObject(WSDL_TARGET_NAMESPACE, OPERATION_NAME);
request.addProperty("username",Username);
request.addProperty("password", Password);
SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
envelope.dotNet = true;
envelope.setOutputSoapObject(request);
HttpTransportSE httptransport = new HttpTransportSE(SOAP_ADDRESS);
try
{
httptransport.call(SOAP_ACTION, envelope);
SoapPrimitive result = (SoapPrimitive) envelope.getResponse();
String value = result.toString();
value_LoginWS = value;
val = value;
login_status = Boolean.valueOf(result.toString());
Log.v("CS return value: -", result.toString());
return value;
}
catch (Exception e)
{
Log.v("Exception Soap" , e.toString());
}
En ligne "httptransport.call(SOAP_ACTION, envelope)"
Je reçois le exception
disant
"org.xmlpull.v1.XmlPullParserException: expected: START_TAG {http://schemas.xmlsoap.org/soap/envelope/}Envelope (position:START_TAG <html>
@1:7 in java.io.InputStreamReader@41afb3f0)" <br/><br/>
Je n'ai aucune idée de ce que l'erreur est d'environ. Ce morceau de code est a parfaitement fonctionné pour l'émulateur( modification de la staticIP to 10.0.2.2:portNo
).
Merci de m'aider à résoudre ce problème.
Merci.
source d'informationauteur Chamal Perera
Vous devez vous connecter pour publier un commentaire.
Ci-dessous la solution est testée et utilisée pour Services Web WCF
Si vous obtenez cette erreur
Puis du possible, les chances sont que votre code n'est pas en mesure d'accéder au service web comme il n'a pas été fourni avec les valeurs correctes de
J'ai eu beaucoup de mal à trouver ces éléments de base, mais les valeurs les plus importantes pour exécuter
ksoap2
Il y a divers exemples qui effectivement m'a dit la théorie derrière cette valeur c'est la façon de générer eux comme des sages
SOAP_ACTION = ESPACE DE NOMS + METHOD_NAME.
Et j'ai continué à expérimenter avec des combinaisons différentes avec aucun Résultat.
Un gars comme moi qui ont peu d'expérience avec les WebServices et Ksoap2 et avait woirked avec JSON, la plupart du temps
réellement obtenir frustated, ce que le diable sont ces valeurs et comment les obtenir correctement.
Vous ne serez jamais jamais confrontés à la difficulté à trouver ces valeurs après avoir à passer par la procédure ci-dessous.
Exécuter votre WebService
1. WebService
Il vous affiche une fenêtre de ce genre pour vous.
2. WSDL
Maintenant Ouvrir Ses
WSDL
Fichier en cliquant sur le lien dans le choix de regarder sesWSDL
Il quelque chose de ressembler à cela.
3.Pour obtenir de l'espace de Noms pour le WebService
Maintenant, recherchez la chaîne "
Namespace
" à l'aide deCtrl+F
Vous obtiendrez quelque chose comme ceci
Ici, vous remarquerez que nous avons
two namespaces
maintenant que l'on à considérer que nous découvrirons plus tard dans les étapes suivantes
Maintenant à utiliser, vous trouverez plus tard
4. Pour obtenir le Nom de la Méthode et de ses Correspondants SoapAction
Recherchez votre méthode que vous souhaitez accéder
"PutRecipeImagesPost"
dans ce casVous verrez qu'il ya
SOAP Action
ici aussi, pour cette méthode.Comme dans
Soap action is NameSpace + Methodname
et ici, nous pouvons voir son à l'aide de
"iscservices.dedicated.co.za"
ainsi de même, nous allons finaliser notre
namespace
5. Pour obtenir l'URL
Recherchez la chaîne
"soap:address location"
La valeur de cet attribut sera votre URL
Donc finalement, nous obtenons l'ensemble de nos valeurs requises.
valeurs selon notre exemple
Si vous n'êtes pas en mesure de voir au-dessus des instantanés ou pas en mesure d'obtenir les valeurs de ces dans vous
WSDl
alors dites-leWebService deveoper
pour corriger cela.Plus tard sur la façon d'utiliser KSoap2
voir ci-dessous, extrait de
La réponse de @Azone est diversement corect, mais vraiment, si ksoap renvoie une réponse comme
se réfère à besoin de quelque chose de différent de ce qu'il utiliser.
Si vous avez besoin d'utiliser le même espace de noms de la source pour START_TAG "soapenv"
la ksoap2 bibliothèque utilise l'espace de noms par défaut
de sorte que votre serveur doit maintenir la même source
tornade-webservices exemple:
ou l'autre manière, vous devez le configurer ksoap que votre serveur
serveur:
ksoap:
Si vous avez utilisé les valeurs de
NAMESPACE
URL
SOAP_ACTION
etMETHOD_NAME
comme décrit dans Azone la réponse, mais le problème persiste, vérifiez la version de SAVON dans cette déclaration:Dans mon cas, j'avais utilisé le
SoapEnvelope.VER12
et quand j'ai changé de nouveau àSoapEnvelope.VER11
l'erreur a été résolue.Comment trouver la Version SOAP à partir de WSDL:
Citant cette réponse:
La réponse à cette question, comme je l'ai trouver est, dans le SOAP_ADDRESS chaîne, retirez la /WebSiteName partie et il fonctionne très bien. J'ai testé cela dans mon appareil android. Fonctionne parfaitement.
Le corrigé Chaîne doit être comme suit:
où CommunicationInterface.asmx est le nom du service web.
d'autres variables statiques restent mêmes.
Remarque: Cette option est utilisée lorsque le site web est hébergé sur IIS.