Bonjour,
Habituellement développeur en C# WindowsForm, je me suis mis très récemment au développement Android (toujours en c#) avec Xamarin.
L'application sur laquelle je bosse doit pouvoir récupérer des données d'une base de données SQL Server.
Après quelques lectures sur différents forums, j'ai décidé de communiquer via service web REST.
J'ai créé mon service (projet windows MVC qui fonctionne) et après quelques tâtonnements j'ai découvert la classe AsyncTask dont j'ai pompé la syntaxe c# et y ai intégré mon bout de code que voici :
Le compilateur me renvoie un message du style :
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 public class ServiceWeb_DataTable : AsyncTask { MainActivity _activite; string _url = string.Empty; public ServiceWeb_DataTable(MainActivity activite, string url) { _activite = activite; _url = url; } protected override void OnPreExecute () { //base.OnPreExecute (); } protected override Java.Lang.Object DoInBackground (params Java.Lang.Object[] @params) { DataTable tmpDatatable = new DataTable (); System.IO.Stream maIS; try { HttpURLConnection urlConnection = null; URL url; url = new URL(_url); urlConnection = (HttpURLConnection) url.OpenConnection(); urlConnection.SetRequestProperty("Content-Type", "application/xml"); urlConnection.Connect(); maIS = urlConnection.InputStream; tmpDatatable.ReadXml(maIS); } catch { } return tmpDatatable; } protected override void OnPostExecute (Java.Lang.Object result) { base.OnPostExecute (result); } }
J'ai tenté de remplacer le type de sortie "Java.Lang.Object" par "DataTable" mais le compilateur à présent j'obtiens :Impossible de convertir implicitement le type 'System.Data.DataTable' en 'Java.Lang.Object'
J'ai vu qu'en Java on n'a pas ce problème, donc on peut définir d'autres types (en entrée comme en sortie).Error CS0508: 'ServiceWeb_DataTable.DoInBackground(params Object[])'*: le type de retour doit être 'Object' pour correspondre au membre substitué 'AsyncTask.DoInBackground(params Object[])'
Malheureusement, j'ai eu beau changer les types dans tous les sens, rien n'y fait.
Suis-je obligé de renvoyer une chaine de caractères (XML) représentant mon DataTable ou est-il possible de renvoyer (proprement) un autre type ? Ou de caster mon datatable en Java.Lang.Object ?
Merci d'avance pour votre aide.
Partager