IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Services Web Discussion :

WCF Rest JSon


Sujet :

Services Web

  1. #1
    Membre habitué
    Inscrit en
    Mai 2002
    Messages
    275
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 275
    Points : 185
    Points
    185
    Par défaut WCF Rest JSon
    Bonjour,

    J'ai développé un service WCF avec requête REST au format JSON.
    J'utilise fiddler pour tester. J'appelle le service avec le content-type: application/json. J'ai une erreur 400. Je remplace application/json par
    application/x-www-form-urlencoded et cela fonctionne.
    J'ai configuré comme suit
    J'ai testé avec les valeurs WebMessageBodyStyle mais sans succés.
    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
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
     
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Runtime.Serialization;
    using System.ServiceModel;
    using System.ServiceModel.Web;
    using System.Text;
    using System.IO;
     
     
    namespace WcfTest
    {
        [ServiceContract]
        public interface ISrvWcfTest
        {
            [OperationContract]
            [WebInvoke(Method = "POST", UriTemplate = "postData", ResponseFormat = WebMessageFormat.Json, RequestFormat = WebMessageFormat.Json)]
            Reponse GetDataUsingDataContract(Stream JSONdataStream); 
     
        }
     
     
        [DataContract]
        public class ObjetMessage
        {
            public string login { get; set; }
            public string mps { get; set; }
            public string dateHeure { get; set; }
            public List<ObjetPost> data { get; set; }
        }
     
        //Tableau la liste d'objets éléments 
        //public 
     
        //Objets contenants les éléments
        [DataContract]
        [Serializable]
        public class ObjetPost
        {
            [DataMember]
            public string id { get; set; }
            [DataMember]
            public ObjetNature nature { get; set; }
            [DataMember]
            public ObjetSource source { get; set; }
            [DataMember]
            public ObjetDetail detail { get; set; }
        }
     
        [DataContract]
        [Serializable]
        public class ObjetNature
        {
            [DataMember]
            public string name { get; set; }
            [DataMember]
            public string type { get; set; }
        }
     
        [DataContract]
        [Serializable]
        public class ObjetSource
        {
            [DataMember]
            public string installation { get; set; }
            [DataMember]
            public string moduleUCG { get; set; }
        }
     
        [DataContract]
        [Serializable]
        public class ObjetDetail
        {
            [DataMember]
            public string date { get; set; }
            [DataMember]
            public string data { get; set; }
            [DataMember]
            public string longData { get; set; }
            [DataMember]
            public string lpAlias { get; set; }
        }
     
     
        //Objet servant à la répoonse 
        [DataContract]
        public class Reponse
        {
            bool fError = false;
            string fmessageInformation = "";
     
            [DataMember]
            public bool error
            {
                get { return fError; }
                set { fError = value; }
            }
     
            [DataMember]
            public string messageInformation
            {
                get { return fmessageInformation; }
                set { fmessageInformation = value; }
            }
        }
    }

    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
     
    public Reponse GetDataUsingDataContract(Stream JSONdataStream)
            {
                Reponse result = new Reponse()
                {
                    error = false,
                    messageInformation = "ok"
                };
     
                try
                {
                    StreamReader reader = new StreamReader(JSONdataStream);
                    string JSONdata = reader.ReadToEnd();
                    ObjetPost cust = jss.Deserialize<ObjetPost>(JSONdata);
                    ObjetMessage MessagePost = new System.Web.Script.Serialization.JavaScriptSerializer().Deserialize<ObjetMessage>(JSONdata);
     
                    if (MessagePost == null)
                    {
                        result.messageInformation = "Impossible de décoder l'objet JSon";
                        result.error = true;
                        return result;
                    }
     
     
                    if (MessagePost.data != null)
                    {
                        foreach (var item in MessagePost.data)
                        {
     
                            DoAjouterFichierLog("----id : " + item.id);
                            DoAjouterFichierLog("----nature");
                            DoAjouterFichierLog("----name : " + item.nature.name);
                            DoAjouterFichierLog("----type: " + item.nature.type);
     
                            DoAjouterFichierLog("----source");
                            DoAjouterFichierLog("----installation : " + item.source.installation);
                            DoAjouterFichierLog("----moduleUCG : " + item.source.moduleUCG);
     
                            DoAjouterFichierLog("----detail");
                            DoAjouterFichierLog("----Date : " + item.detail.date);
                            DoAjouterFichierLog("----Data : " + item.detail.data);
                            DoAjouterFichierLog("----longData : " + item.detail.longData);
                            DoAjouterFichierLog("----LpAlias : " + item.detail.lpAlias);
     
                            result.error = false;
                        }
                    }
                    else
                    {
                        DoAjouterFichierLog("MessagePost.data null");
     
                    }
     
                    return result;
                }
                catch (Exception ex)
                {
                    //result.MessageInformation = "Exception dans la lecture : " + ex.Message;
                    DoAjouterFichierLog("Exception dans la lecture : " + ex.Message); 
     
                    return result;
                }
            }
    J'ai parcouru le web et les tutoriels.
    Est-ce quelqu'un à une idée pour orienter mes recherches ?
    merci d'avance
    a+

  2. #2
    Membre habitué
    Inscrit en
    Mai 2002
    Messages
    275
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 275
    Points : 185
    Points
    185
    Par défaut
    Après une dernière recherche, il faut déclarer dans le svc la balise
    Factory="System.ServiceModel.Activation.WebServiceHostFactory".

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Débutant] Problème de configuration WCF REST JSON
    Par kheironn dans le forum Windows Communication Foundation
    Réponses: 2
    Dernier message: 19/08/2014, 12h22
  2. Sencha touche consommer une service WCF Rest JSON
    Par aymen8219 dans le forum Ext JS / Sencha
    Réponses: 1
    Dernier message: 23/02/2013, 20h31
  3. Service Web WCF REST JSON et firefox
    Par FraktaL dans le forum Services Web
    Réponses: 8
    Dernier message: 13/02/2013, 17h51
  4. Problème d'encodage fichier JSON avec WCF REST Service
    Par Spikuria dans le forum Services Web
    Réponses: 0
    Dernier message: 09/03/2012, 10h24
  5. [3.5] Webservice WCF/REST
    Par CUCARACHA dans le forum Windows Communication Foundation
    Réponses: 2
    Dernier message: 21/03/2008, 07h48

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo