Bonjour,
Jet tente d’interagir avec un fichier WSDL situer dans une passerelle de marque échelon. Pour cela j'ai développer une petite application android demandent juste une requête a cette dernière. J'ai pour cela utiliser la bibliothèque Ksoap1.1.
Quand je demande la requette j'abtien une erreur XmlPullParserException: expected: START_TAG.
J'ai cherché a résoudre ce problème en modifiant mon adressage mais rien ni change.
Si vous pouvez m'aidez ou me donné des piste de recherche je vous en serez très reconnaissant.
(ps. Je suis débutant en web-service et K soap.)
voici mon logcat:
Ma fonction Connexion
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 11-26 13:02:39.635: E/Trace(1262): error opening trace file: No such file or directory (2) 11-26 13:02:40.355: D/gralloc_goldfish(1262): Emulator without GPU emulation detected. 11-26 13:02:45.655: E/Connect(1262): Erreur: 11-26 13:02:45.655: E/Connect(1262): org.xmlpull.v1.XmlPullParserException: expected: START_TAG {http://schemas.xmlsoap.org/soap/envelope/}Envelope (position:START_TAG <H1>@1:5 in java.io.InputStreamReader@4123dda8) 11-26 13:02:45.655: E/Connect(1262): at org.kxml2.io.KXmlParser.require(KXmlParser.java:2046) 11-26 13:02:45.655: E/Connect(1262): at org.ksoap2.SoapEnvelope.parse(SoapEnvelope.java:127) 11-26 13:02:45.655: E/Connect(1262): at org.ksoap2.transport.Transport.parseResponse(Transport.java:63) 11-26 13:02:45.655: E/Connect(1262): at org.ksoap2.transport.HttpTransportSE.call(HttpTransportSE.java:100) 11-26 13:02:45.655: E/Connect(1262): at com.myconnexionsoap.Connexion$GroundServiceRead.doInBackground(Connexion.java:91) 11-26 13:02:45.655: E/Connect(1262): at com.myconnexionsoap.Connexion$GroundServiceRead.doInBackground(Connexion.java:1) 11-26 13:02:45.655: E/Connect(1262): at android.os.AsyncTask$2.call(AsyncTask.java:287) 11-26 13:02:45.655: E/Connect(1262): at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305) 11-26 13:02:45.655: E/Connect(1262): at java.util.concurrent.FutureTask.run(FutureTask.java:137) 11-26 13:02:45.655: E/Connect(1262): at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:230) 11-26 13:02:45.655: E/Connect(1262): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076) 11-26 13:02:45.655: E/Connect(1262): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569) 11-26 13:02:45.655: E/Connect(1262): at java.lang.Thread.run(Thread.java:856)
J'ai bien mi aussi dans le manifest la permission internet:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124 package com.myconnexionsoap; /**** * dépendance android */ import android.app.Activity; import android.os.AsyncTask; import android.os.Bundle; import android.util.Log; import android.view.View; import android.widget.Toast; /**** * dépendance de ksoap */ import org.ksoap2.SoapEnvelope; import org.ksoap2.serialization.SoapObject; import org.ksoap2.serialization.SoapPrimitive; import org.ksoap2.serialization.SoapSerializationEnvelope; import org.ksoap2.transport.HttpTransportSE; import org.ksoap2.serialization.PropertyInfo; public class Connexion extends Activity { /**** * declaration de l'adresse et des methodes */ private static final String NAMESPACE = "http://wsdl.echelon.com/web_services_ns/ilon100/v4.0/wsdl/"; private static String URL="http://192.168.1.105:/WSDL/v4.0/iLON100.wsdl"; private static final String METHOD_NAME = "Read"; private static final String SOAP_ACTION = "http://wsdl.echelon.com/web_services_ns/ilon100/v4.0/action/"; private String Results = null; private String Errors = null; /**** * S'éffectue la première fois que l'activité ce lance: * Initialisation de l'activité */ @Override public void onCreate (Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_connexion); }/*** end public void onCreate (Bundle savedInstanceThread) ***/ /**** * Methode OnClick "ValRelais" de @+id/btn_TestValRelais * @param V */ public void ValRelais (View V) { /*** Appel de la tache de fond read ***/ GroundServiceRead MyRead = new GroundServiceRead(); MyRead.execute(); }/*** public void ValRelais (View V) ***/ private class GroundServiceRead extends AsyncTask<Void, Void, Void> { @Override protected void onPreExecute() { super.onPreExecute(); Toast.makeText(getApplicationContext(), "Début du traitement asynchrone", Toast.LENGTH_LONG).show(); } @Override protected Void doInBackground(Void... V) { try { SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME); //PropertyInfo propInfo=new PropertyInfo(); //propInfo.name="Read"; //propInfo.type=PropertyInfo.STRING_CLASS; //request.addProperty(propInfo, ""); SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11); envelope.setOutputSoapObject(request); envelope.bodyOut = request; HttpTransportSE androidHttpTransport = new HttpTransportSE(URL); try { androidHttpTransport.call(SOAP_ACTION, envelope); SoapPrimitive resultsRequestSOAP = (SoapPrimitive) envelope.getResponse(); Results = resultsRequestSOAP.toString(); } catch (Exception e) //connexion NOK: afficher l'exeption { //Affiche l'exeption clairement dans le logcat Log.e("Connect","Erreur: ",e); Errors = e.getMessage(); } } catch (Exception e) { Log.e("URL","Erreur: ",e); Errors = e.getMessage(); } /*********************************************************************************************/ return null; }/*** protected Void doInBackground(Void... V) ***/ @Override protected void onPostExecute(Void result) { super.onPostExecute(result); if (Errors != null) { Toast.makeText(getApplicationContext(), "" + Results, Toast.LENGTH_LONG).show(); } else { Toast.makeText(getApplicationContext(), "" + Errors, Toast.LENGTH_LONG).show(); } Toast.makeText(getApplicationContext(), "Le traitement asynchrone est terminé", Toast.LENGTH_LONG).show(); }/*** protected void onPostExecute(Void result) ***/ }/*** end private class GroundServiceRead extends AsyncTask<Void, Integer, Void> ***/ }/*** end public class Connexion extends Activity ***/
Et j'accède bien a mon wsdl sur internet (navigateur: Mozilla).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2<uses-permission android:name="android.permission.INTERNET"></uses-permission>
Voici mon fichier wsdl:
Voila je remerci d'avance tout personne ce penchant sur mon problème.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 <definitions name="iLON100" targetNamespace="http://wsdl.echelon.com/web_services_ns/ilon100/v4.0/wsdl/"><types><xsd:annotation><xsd:appinfo> _________________________________________________________ i.LON100's general declaration of the SOAP interface. _________________________________________________________ It is prohibited to change any declaration in this file! Copyright 2007 Echelon Corporation http://www.echelon.com </xsd:appinfo><xsd:documentation> Look into the imported xsd file for more informations </xsd:documentation></xsd:annotation><!-- ******************************************************** --><!-- external schema import --><!-- ******************************************************** --><xsd:schema elementFormDefault="qualified"><xsd:import namespace="http://wsdl.echelon.com/web_services_ns/ilon100/v4.0/message/" schemaLocation="iLON100.xsd"/></xsd:schema></types><!-- ******************************************************** --><!-- declaration: 'wsdl:message' --><!-- ******************************************************** --><!-- ________________________________________________________ --><!-- List --><message name="List_SoapIn"><part name="parameters" element="ilon:List"/></message><message name="List_SoapOut"><part name="parameters" element="ilon:ListResponse"/></message><!-- Get --><message name="Get_SoapIn"><part name="parameters" element="ilon:Get"/></message><message name="Get_SoapOut"><part name="parameters" element="ilon:GetResponse"/></message><!-- Set --><message name="Set_SoapIn"><part name="parameters" element="ilon:Set"/></message><message name="Set_SoapOut"><part name="parameters" element="ilon:SetResponse"/></message><!-- Delete --><message name="Delete_SoapIn"><part name="parameters" element="ilon:Delete"/></message><message name="Delete_SoapOut"><part name="parameters" element="ilon:DeleteResponse"/></message><!-- Read --><message name="Read_SoapIn"><part name="parameters" element="ilon:Read"/></message><message name="Read_SoapOut"><part name="parameters" element="ilon:ReadResponse"/></message><!-- Write --><message name="Write_SoapIn"><part name="parameters" element="ilon:Write"/></message><message name="Write_SoapOut"><part name="parameters" element="ilon:WriteResponse"/></message><!-- Clear --><message name="Clear_SoapIn"><part name="parameters" element="ilon:Clear"/></message><message name="Clear_SoapOut"><part name="parameters" element="ilon:ClearResponse"/></message><!-- InvokeCmd --><message name="InvokeCmd_SoapIn"><part name="parameters" element="ilon:InvokeCmd"/></message><message name="InvokeCmd_SoapOut"><part name="parameters" element="ilon:InvokeCmdResponse"/></message><!-- ________________________________________________________ --><!-- common header --><message name="iLON100SoapHeader"><part name="soapHeaderPart" element="ilon:messageProperties"/></message><!-- ******************************************************** --><!-- declaration: 'wsdl:portType' --><!-- ******************************************************** --><portType name="iLON100portType"><!-- ______________________________________________________ --><!-- List --><operation name="List"><input message="ilonwsdl:List_SoapIn"/><output message="ilonwsdl:List_SoapOut"/></operation><!-- Get --><operation name="Get"><input message="ilonwsdl:Get_SoapIn"/><output message="ilonwsdl:Get_SoapOut"/></operation><!-- Set --><operation name="Set"><input message="ilonwsdl:Set_SoapIn"/><output message="ilonwsdl:Set_SoapOut"/></operation><!-- Delete --><operation name="Delete"><input message="ilonwsdl:Delete_SoapIn"/><output message="ilonwsdl:Delete_SoapOut"/></operation><!-- Read --><operation name="Read"><input message="ilonwsdl:Read_SoapIn"/><output message="ilonwsdl:Read_SoapOut"/></operation><!-- Write --><operation name="Write"><input message="ilonwsdl:Write_SoapIn"/><output message="ilonwsdl:Write_SoapOut"/></operation><!-- Clear --><operation name="Clear"><input message="ilonwsdl:Clear_SoapIn"/><output message="ilonwsdl:Clear_SoapOut"/></operation><!-- InvokeCmd --><operation name="InvokeCmd"><input message="ilonwsdl:InvokeCmd_SoapIn"/><output message="ilonwsdl:InvokeCmd_SoapOut"/></operation></portType><!-- ******************************************************** --><!-- declaration: 'wsdl:binding' --><!-- ******************************************************** --><binding name="iLON100soap11Binding" type="ilonwsdl:iLON100portType"><!-- ______________________________________________________ --><!-- 'soap:binding' --><soapbind:binding transport="http://schemas.xmlsoap.org/soap/http" style="document"/><!-- ______________________________________________________ --><!-- List --><operation name="List"><soapbind:operation soapAction="http://wsdl.echelon.com/web_services_ns/ilon100/v4.0/action/List"/><input name="ListRequest"><soapbind:body parts="parameters" use="literal"/><soapbind:header message="ilonwsdl:iLON100SoapHeader" part="soapHeaderPart" use="literal"/></input><output name="ListResponse"><soapbind:body parts="parameters" use="literal"/><soapbind:header message="ilonwsdl:iLON100SoapHeader" part="soapHeaderPart" use="literal"/></output></operation><!-- Get --><operation name="Get"><soapbind:operation soapAction="http://wsdl.echelon.com/web_services_ns/ilon100/v4.0/action/Get"/><input name="GetRequest"><soapbind:body parts="parameters" use="literal"/><soapbind:header message="ilonwsdl:iLON100SoapHeader" part="soapHeaderPart" use="literal"/></input><output name="GetResponse"><soapbind:body parts="parameters" use="literal"/><soapbind:header message="ilonwsdl:iLON100SoapHeader" part="soapHeaderPart" use="literal"/></output></operation><!-- Set --><operation name="Set"><soapbind:operation soapAction="http://wsdl.echelon.com/web_services_ns/ilon100/v4.0/action/Set"/><input name="SetRequest"><soapbind:body parts="parameters" use="literal"/><soapbind:header message="ilonwsdl:iLON100SoapHeader" part="soapHeaderPart" use="literal"/></input><output name="SetResponse"><soapbind:body parts="parameters" use="literal"/><soapbind:header message="ilonwsdl:iLON100SoapHeader" part="soapHeaderPart" use="literal"/></output></operation><!-- Delete --><operation name="Delete"><soapbind:operation soapAction="http://wsdl.echelon.com/web_services_ns/ilon100/v4.0/action/Delete"/><input name="DeleteRequest"><soapbind:body parts="parameters" use="literal"/><soapbind:header message="ilonwsdl:iLON100SoapHeader" part="soapHeaderPart" use="literal"/></input><output name="DeleteResponse"><soapbind:body parts="parameters" use="literal"/><soapbind:header message="ilonwsdl:iLON100SoapHeader" part="soapHeaderPart" use="literal"/></output></operation><!-- Read --><operation name="Read"><soapbind:operation soapAction="http://wsdl.echelon.com/web_services_ns/ilon100/v4.0/action/Read"/><input name="ReadRequest"><soapbind:body parts="parameters" use="literal"/><soapbind:header message="ilonwsdl:iLON100SoapHeader" part="soapHeaderPart" use="literal"/></input><output name="ReadResponse"><soapbind:body parts="parameters" use="literal"/><soapbind:header message="ilonwsdl:iLON100SoapHeader" part="soapHeaderPart" use="literal"/></output></operation><!-- Write --><operation name="Write"><soapbind:operation soapAction="http://wsdl.echelon.com/web_services_ns/ilon100/v4.0/action/Write"/><input name="WriteRequest"><soapbind:body parts="parameters" use="literal"/><soapbind:header message="ilonwsdl:iLON100SoapHeader" part="soapHeaderPart" use="literal"/></input><output name="WriteResponse"><soapbind:body parts="parameters" use="literal"/><soapbind:header message="ilonwsdl:iLON100SoapHeader" part="soapHeaderPart" use="literal"/></output></operation><!-- Clear --><operation name="Clear"><soapbind:operation soapAction="http://wsdl.echelon.com/web_services_ns/ilon100/v4.0/action/Clear"/><input name="ClearRequest"><soapbind:body parts="parameters" use="literal"/><soapbind:header message="ilonwsdl:iLON100SoapHeader" part="soapHeaderPart" use="literal"/></input><output name="ClearResponse"><soapbind:body parts="parameters" use="literal"/><soapbind:header message="ilonwsdl:iLON100SoapHeader" part="soapHeaderPart" use="literal"/></output></operation><!-- InvokeCmd --><operation name="InvokeCmd"><soapbind:operation soapAction="http://wsdl.echelon.com/web_services_ns/ilon100/v4.0/action/InvokeCmd"/><input name="InvokeCmdRequest"><soapbind:body parts="parameters" use="literal"/><soapbind:header message="ilonwsdl:iLON100SoapHeader" part="soapHeaderPart" use="literal"/></input><output name="InvokeCmdResponse"><soapbind:body parts="parameters" use="literal"/><soapbind:header message="ilonwsdl:iLON100SoapHeader" part="soapHeaderPart" use="literal"/></output></operation></binding><!-- ************************************************************* --><!-- declaration: 'wsdl:service' --><!-- ************************************************************* --><service name="iLON100"><port name="iLON100httpPort" binding="ilonwsdl:iLON100soap11Binding"><soapbind:address location="http://localhost/WSDL/iLON100.wsdl"/></port></service></definitions>
Merci.
Partager