bonjour
qui pourrai m'aider à mettre à jour l'exemple ci-dessous afin de pouvoir faire un PUT d'une liste de Film
http://badger.developpez.com/tutorie...avec-wcf-3-5/#
J'ai dans l'interface ajouté une nouvelle OpérationContract
j'ai dans la classe qui implement l'interface ajouté la méthode suivante:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 [OperationContract] [WebInvoke(Method = "POST", UriTemplate = "putfilms", ResponseFormat = WebMessageFormat.Xml, RequestFormat = WebMessageFormat.Xml)] void CreateFilms(List<Film> newFilms);
Je ne sais pas s'il faut modifier les Classes Film.cs et ListeFilms.cs
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 public void CreateFilms(List<Film> newFilms) { if (newFilms != null) { //to implement } }
Coté client j'ai sérialisé une liste de film
le résultat n'est pas très jolie:
et voici ma fonction qui envoi mes films coté client:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 "<?xml version=\"1.0\" encoding=\"utf-16\"?>\r\n <ArrayOfFilmClient xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\">\r\n <FilmClient>\r\n <Id xmlns=\"http://schemas.developpez.com/BoxOfficeREST/2008/03\">0</Id>\r\n <Titre xmlns=\"http://schemas.developpez.com/BoxOfficeREST/2008/03\">Test1</Titre>\r\n <Annee xmlns=\"http://schemas.developpez.com/BoxOfficeREST/2008/03\">2010</Annee>\r\n <Entrees xmlns=\"http://schemas.developpez.com/BoxOfficeREST/2008/03\">10.2</Entrees>\r\n </FilmClient>\r\n <FilmClient>\r\n <Id xmlns=\"http://schemas.developpez.com/BoxOfficeREST/2008/03\">0</Id>\r\n <Titre xmlns=\"http://schemas.developpez.com/BoxOfficeREST/2008/03\">Test2</Titre>\r\n <Annee xmlns=\"http://schemas.developpez.com/BoxOfficeREST/2008/03\">1990</Annee>\r\n <Entrees xmlns=\"http://schemas.developpez.com/BoxOfficeREST/2008/03\">20.3</Entrees>\r\n </FilmClient>\r\n </ArrayOfFilmClient>"
J'ai un "bad request" lorsque j'execute ma nouvelle fonction
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 private void bt_Push_several_films_Click(object sender, EventArgs e) { List<FilmClient> films = new List<FilmClient>(); //création de la requete HttpWebRequest requete = WebRequest.Create(UrlWebService + "/putfilms") as HttpWebRequest; requete.Method = WebRequestMethods.Http.Post; requete.ContentType = "text/xml"; //le film à ajouter FilmClient film1 = new FilmClient { Annee = int.Parse(tb_annee1.Text), Entrees = double.Parse(tb_entree1.Text), Titre = tb_titre1.Text }; //le film à ajouter FilmClient film2 = new FilmClient { Annee = int.Parse(tb_annee2.Text), Entrees = double.Parse(tb_entree2.Text), Titre = tb_titre2.Text }; films.Add(film1); films.Add(film2); // Ecriture des données de la requête Stream requeteStream = requete.GetRequestStream(); //sérialisation du film System.Xml.Serialization.XmlSerializer writer = new System.Xml.Serialization.XmlSerializer(typeof(List<FilmClient>)); writer.Serialize(requeteStream, films); requeteStream.Close(); //affichage du XML envoyé dans une richTextBox StringBuilder stb = new StringBuilder(); using (StringWriter sw = new StringWriter(stb)) { writer.Serialize(sw, films); } rtb_films.Text = stb.ToString(); try { using (HttpWebResponse reponse = requete.GetResponse() as HttpWebResponse) //on récupère la réponse du serveur { //on récupère valeur du champ d'entête HTTP "Location" envoyée par le service String location = reponse.Headers["location"]; this.txtHttpLocation.Text = location; } } catch (WebException we) { if (we.Status == WebExceptionStatus.ProtocolError) { HttpWebResponse r = (HttpWebResponse)we.Response; MessageBox.Show("Code d'erreur: " + r.StatusCode.ToString()); r.Close(); } else MessageBox.Show(we.Message + " " + we.Status.ToString()); } catch (Exception ex) { MessageBox.Show("Erreur", ex.Message); } }
si quelqu'un peut m'aider à pousser ma liste de film ça serait sympa
merci d'avance
Partager