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 :
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();
    }
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
<host>
          <baseAddresses>
            <add baseAddress="http://localhost:8732/IServiceTest"/>
          </baseAddresses>
        </host>
Celui ci marche bien, avec un client .Net j'intérroge bien mon WS.

En revanche coté android, j'utilise android studio, avec un émulateur. j'ai mis en place 3 solutions pour intérroger mon ws :

1ere
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;
        }
le code fonctionne, pas d'erreur particulière, sauf celle du catch.

2eme version :

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;
        }
la version du tuto sur ce site meme.

3eme :

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();
...
rien qu'a ce niveau je sors en erreur

pour info voici mon parametrage :

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";
Celui ci me semble ok d'après le wsdl.

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