Bonjour bonsoir tout le monde.
pour mon souci l'intitulé est clair. pour détailler :
je développe un web service en .Net C#, plus précisément un wcf, dont voici le code :
et dans mon app.config j'ai ceci entre autre :
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 public class ServiceTest : IServiceTest { static List<Menu> lstMenu; public int getNombreMenu() { Console.WriteLine("demande de comptabilité"); if (lstMenu == null) lstMenu = new List<Menu>(); return (lstMenu.Count); } } [ServiceContract(Namespace="NabService.test")] public interface IServiceTest { [OperationContract] int getNombreMenu(); }
Celui ci marche bien, avec un client .Net j'intérroge bien mon WS.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5<host> <baseAddresses> <add baseAddress="http://localhost:8732/IServiceTest"/> </baseAddresses> </host>
En revanche coté android, j'utilise android studio, avec un émulateur. j'ai mis en place 3 solutions pour intérroger mon ws :
1ere
le code fonctionne, pas d'erreur particulière, sauf celle du catch.
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 SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME); SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11); envelope.dotNet=true; envelope.setOutputSoapObject(request); HttpTransportSE androidHttpTransport = new HttpTransportSE(URL); androidHttpTransport.debug=true; boolean bError = false; try { if(androidHttpTransport == null) tv.setText("httpTransport nul"); else { androidHttpTransport.call(SOAP_ACTION,envelope); tv.setText("envoi de requete ok"); } } catch (Exception exp) { tv.setText("erreur d'envoi de requete " + exp.getMessage()); bError = true; }
2eme version :
la version du tuto sur ce site meme.
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 InputStream StreamReponse = null; try { // Ouverture de la connexion URL url = new URL(URL); HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection(); // Connexion à l'URL urlConnection.connect(); // Si le serveur nous répond avec un code OK if (urlConnection.getResponseCode() == HttpURLConnection.HTTP_OK) { StreamReponse = urlConnection.getInputStream(); } } catch (Exception e) { return null; }
3eme :
rien qu'a ce niveau je sors en erreur
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 URL myurl = null; try { myurl = new URL(URL + "/getNombreMenu"); Toast.makeText(getApplicationContext(), "URL ok",Toast.LENGTH_LONG).show(); } catch (MalformedURLException e) { // TODO Auto-generated catch block e.printStackTrace(); } try { URLConnection myconn =myurl.openConnection(); Toast.makeText(getApplicationContext(), "instance connexion",Toast.LENGTH_LONG).show(); InputStream in= new BufferedInputStream(myconn.getInputStream()); Toast.makeText(getApplicationContext(), "reception flux",Toast.LENGTH_LONG).show(); ...
pour info voici mon parametrage :
Celui ci me semble ok d'après le wsdl.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 private static final String NAMESPACE = "NabService.test"; private static final String URL = "http://10.0.2.2:8732/IServiceTest"; private static final String METHOD_NAME = "getNombreMenu"; private static final String SOAP_ACTION = "NabService.test/IServiceTest/getNombreMenu";
j'ai bien la permission d'accès au web sur mon manifest, mon navigateur se connecte bien a internet depuis l'émulateur, et j'ai essayé d'appeler mon web service depuis le navigateur mais erreur quand meme.
si quelqu'un aurait une solution à m'avancer j'y serai très attentif.
si vous avez besoin de plus d'infos n'hésitez pas.
Merci d'avance pour votre aide
Partager