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
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);
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
4
5
6
7
     public void CreateFilms(List<Film> newFilms)
        {
            if (newFilms != null)
            {
                //to implement
            }
        }
Je ne sais pas s'il faut modifier les Classes Film.cs et ListeFilms.cs

Coté client j'ai sérialisé une liste de film
le résultat n'est pas très jolie:
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>"
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
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);
            }
        }
J'ai un "bad request" lorsque j'execute ma nouvelle fonction
si quelqu'un peut m'aider à pousser ma liste de film ça serait sympa
merci d'avance