Salut,
J'ai cr�� un simple controller MVC nomm� "ProgrammesController" contenant une m�thode Get() me permettant de r�cup�rer un datatable (qui fonctionne bien).
Pour y acc�der je tape directement dans mon explorateur : "http://MonServeur/Updator_Service/api/Programmes/" (cela fonctionne)

j'ai ensuite cr�� une m�thode Get(string id) permettant de renvoyer un datatable ne contenant que les donn�es concern�es par cet "id".
Pour y acc�der : "http://MonServeur/Updator_Service/api/Programmes/truc" o� "truc" est l'id � envoyer pour filtrer le datatable. (dans l'explorateur cela fonctionne)

voici le code de ce controller :
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
 
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Net.Http;
using System.Web.Http;
using System.Web;
using System.Data;
 
namespace Updator.Controllers
{
    public class ProgrammesController : ApiController
    {
        public System.Data.DataTable Get(string id)
        {
            DataTable dt_Programmes = null;
            DataTable dt_Logiciels = null;
            Outils_BDD.Objets.Connexion_BDD_Collection mesConnexions = null;
 
            Commun.logue("Tentative de récupération des programmes pour la tablette '" + id + "'", "ProgrammesController.RecupProgrammes", "Updator", null);
 
            try
            {
                mesConnexions = new Outils_BDD.Objets.Connexion_BDD_Collection(HttpContext.Current.Server.MapPath(@"~/Parametres/Connexions.xml"), true);
            }
            catch (Exception ex)
            {
                Commun.logue("Erreur lors de la connexion à la base 'Applications'", "ProgrammesController.RecupProgrammes", "Updator", ex);
                return null;
            }
 
            try
            {
                dt_Programmes = new DataTable("Programmes");
 
                string requete = "SELECT * FROM Recup_Android_Programmes_Tablettes_V ORDER BY NumSerie, Nom";
                Outils_BDD.Utiles.RecupCharge_Table(dt_Programmes, requete, HttpContext.Current.Server.MapPath(@"~/Parametres/Programmes.xml"), mesConnexions["Applications"], true, false);
 
                DataRow[] drs_Programmes = dt_Programmes.Select("NumSerie = '" + id + "'");
                dt_Logiciels = dt_Programmes.Clone();
                foreach (DataRow dr_Programme in drs_Programmes)
                {
                    dt_Logiciels.ImportRow(dr_Programme);
                }
            }
            catch (Exception ex)
            {
                Commun.logue("Erreur lors de la récupération des Programmes", "ProgrammesController.Get", "Updator", ex);
                return null;
            }
 
            return dt_Logiciels;
        }
 
        public System.Data.DataTable Get()
        {
            DataTable dt_Programmes = null;
            Outils_BDD.Objets.Connexion_BDD_Collection mesConnexions = null;
 
            Commun.logue("Tentative de récupération des programmes", "ProgrammesController.Get", "Updator", null);
 
            try
            {
                mesConnexions = new Outils_BDD.Objets.Connexion_BDD_Collection(HttpContext.Current.Server.MapPath(@"~/Parametres/Connexions.xml"), true);
            }
            catch (Exception ex)
            {
                Commun.logue("Erreur lors de la connexion à la base 'Applications'", "ProgrammesController.Get", "Updator", ex);
                return null;
            }
 
            try
            {
                dt_Programmes = new DataTable("Programmes");
 
                string requete = "SELECT * FROM Recup_Android_Programmes_Tablettes_V ORDER BY NumSerie, Nom";
                Outils_BDD.Utiles.RecupCharge_Table(dt_Programmes, requete, HttpContext.Current.Server.MapPath(@"~/Parametres/Programmes.xml"), mesConnexions["Applications"], true, false);
            }
            catch (Exception ex)
            {
                Commun.logue("Erreur lors de la récupération des Programmes", "ProgrammesController.Get", "Updator", ex);
                return null;
            }
 
            return dt_Programmes;
        }
    }
}
Donc, dans l'explorateur les deux fonctionnent, j'ai ensuite cr�� (sous android/xamarin) deux bouts de code pour r�cup�rer les donn�es de ce service web.
Le premier n'ayant qu'� interroger le service web :
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
 
public static DataTable Recup_DataTable_ServiceWeb(string URL_ServiceWeb)
        {
            DataTable retour = null;
            System.IO.Stream maIS;
 
            try
            {
                HttpURLConnection urlConnection = null;
                URL url;
                url = new URL(URL_ServiceWeb);
                urlConnection = (HttpURLConnection)url.OpenConnection();
                urlConnection.SetRequestProperty("Content-Type", "application/xml");
                urlConnection.Connect();
 
                maIS = urlConnection.InputStream;
 
                retour = new DataTable();
                retour.ReadXml(maIS);
            }
            catch (Exception ex)
            {
                throw new Exception("Erreur avec le service web '" + URL_ServiceWeb + "' : " + ex.Message);
            }
 
            return retour;
        }
appel� comme ceci : Outils_Android_Reseau.Service_Web.Recup_DataTable_ServiceWeb("http://MonServeur/Updator_Service/api/Programmes");
Ce code fonctionne parfaitement, je r�cup�re bien mon dataset au complet dans mon programme Android.

Le deuxi�me par contre me pose probl�me; Voici le bout de 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
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
 
public static DataTable Recup_DataTable_ServiceWeb(string filtre, string URL_ServiceWeb)
        {
            DataTable retour = null;
            HttpURLConnection urlConnection = null;
 
            try//Envoi Post
            {                
                URL url = new URL(URL_ServiceWeb);
                urlConnection = (HttpURLConnection)url.OpenConnection();
                urlConnection.RequestMethod = "POST";
                urlConnection.SetRequestProperty("Content-Type", "application/xml");
                //urlConnection.SetRequestProperty("Content-Type", "text/xml; charset=utf-8");
 
                urlConnection.DoInput = true;
                urlConnection.DoOutput = true;
 
                Stream os = urlConnection.OutputStream;
                PrintWriter pw = new PrintWriter(os);
                pw.Print(filtre);
                pw.Close();
            }
            catch (Exception ex)
            {
                throw new Exception("Erreur Lors de l'envoi : " + ex.Message);
            }
 
            try//Reception reponse
            {
                HttpStatus status = urlConnection.ResponseCode;
 
                if (status != HttpStatus.Ok)
                {
                    retour = null;
                }
                else
                {
                    retour = new DataTable();
                    retour.ReadXml(urlConnection.InputStream);
                }
            }
            catch (Exception ex)
            {
                throw new Exception("Erreur Lors de la réception de la réponse : " + ex.Message);
            }
 
            return retour;
        }
pour l'ex�cuter : Outils_Android_Reseau.Service_Web.Recup_DataTable_ServiceWeb(_numSerie, "http://MonServeur/Updator_Service/api/Programmes");

Quand je l'ex�cute, "urlConnection.ResponseCode" me renvoie syst�matiquement "Java.Net.HttpStatus.BadMethod"

Je tourne en rond depuis plusieurs heures et malgr� les exemples similaires sur le web je ne trouve pas l'origine de mon probl�me
J'ai tendance � penser que le service web est correct vu que via Firefox j'obtiens bien dans les deux cas un XML repr�sentant mon datatable.
Et au vu des exemples trouv� sur le web, je ne vois pas ce que j'ai pu louper dans le code cot� Android.

Je ne suis ni un pro d'Android (Seulement 2 programmes assez simples � mon actif) ni d'ASP.Net en g�n�ral (quelques petits projets simples seulement)

Quelqu'un peut'il m'�clairer ?

Merci