Bonjour,
Je ne suis pas sûre de poster où il faut, veuillez m'excuser si ce n'est pas le cas.
Je suis actuellement en train de créer un WebService RESTful qui va d'une part récupérer en POST un identifiant et un fichier JSON pour les stocker dans une base (au format varbinary), et d'autre part retourner en GET le fichier JSON correspondant à l'identifiant passé en paramètre. Là-dessus, tout va bien.
En fait, j'ai un souci quand je récupère mon fichier JSON : tout y est, mais j'ai en plus les caractères Unicode \u000a et \u000d qui apparaissent, ainsi que des \ devant chacune de mes guillemets. Comment faire pour que ce ne soit pas le cas, comme dans mon fichier d'origine ?
Voici comment je consomme mon service pour tester :
RequestData et ResponseData sont des DataContract de mon WebService, contenant respectivement 2 string (IdFichier et Fichier) et un booléen.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 const string url = "http://localhost:62240/iECVService.svc/savejson"; WebClient webClient = new WebClient(); webClient.Headers["Content-type"] = "application/json; charset=utf-8"; RequestData reqData = new RequestData { IdFichier = "12", Fichier = System.IO.File.ReadAllText(@"C:\Dev\iECV\iECVMvcApplication\Content\fichier2.json") }; MemoryStream requestMs = new MemoryStream(); DataContractJsonSerializer requestSerializer = new DataContractJsonSerializer(typeof(RequestData)); requestSerializer.WriteObject(requestMs, reqData); byte[] responseData = webClient.UploadData(url, "POST", requestMs.ToArray()); MemoryStream responseMs = new MemoryStream(responseData); DataContractJsonSerializer responseSerializer = new DataContractJsonSerializer(typeof(ResponseData)); ResponseData resData = responseSerializer.ReadObject(responseMs) as ResponseData;
Voici comment je sauvegarde et je récupère mon fichier côté WebService :
Je ne sais pas trop d'où peut venir le problème, j'ai déjà essayé de changer l'Encoding dans ces 2 méthodes, et d'en préciser dans la méthode ReadAllText dont je me sers au début pour lire mon fichier, mais ça ne m'a pas aidée...
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 public string GetFichierFoyer(string id) { return System.Text.Encoding.ASCII.GetString(Container.FichierFoyer.SingleOrDefault(f => f.ID == id).fichier); } /// <summary> /// Permet de sauvegarder en base un fichier contenant les données d'un foyer /// </summary> /// <param name="id">L'identifiant du fichier</param> /// <param name="fichier">Le fichier à sauvegarder</param> public bool SaveFichierFoyer(string id, string fichier) { try { byte[] fichierBytes = System.Text.Encoding.ASCII.GetBytes(fichier); FichierFoyer fichierFoyer = FichierFoyer.CreateFichierFoyer(id, fichierBytes); Container.FichierFoyer.AddObject(fichierFoyer); Container.SaveChanges(); return true; } catch (Exception e) { //TODO Trouver comment afficher un message d'erreur... Console.WriteLine(e.Message); return false; } }
Des idées ??
Merci d'avance pour votre aide !
Partager