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

Windows Communication Foundation .NET Discussion :

REST JSON et post


Sujet :

Windows Communication Foundation .NET

  1. #1
    Membre confirmé
    Avatar de topolino
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    1 901
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 1 901
    Points : 637
    Points
    637
    Par défaut REST JSON et post
    Bonjour,

    Je voudrais poster un object Client en JSON à mon service WCF.

    Interface
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    [OperationContract]
            [WebInvoke(Method = "POST", UriTemplate = "UpdateClientByClientId", ResponseFormat = WebMessageFormat.Json, RequestFormat=WebMessageFormat.Json, BodyStyle= WebMessageBodyStyle.Wrapped)]
            void UpdateClientByClientId(BusinessObject.Clients client);
    Et je lui envoie via xmlhttprequest :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    {"Clients:"{"ClientID":30,"ClientShortName":"TEST"}}
    Et j'ai ce message d'erreur:

    The exception message is 'The data at the root level is invalid. Line 1, position 1.'. See server logs for more details. The exception stack trace is:</P>

    <P class="intro"> at System.Xml.XmlExceptionHelper.ThrowXmlException(XmlDictionaryReader reader, String res, String arg1, String arg2, String arg3)

    at System.Xml.XmlExceptionHelper.ThrowInvalidRootData(XmlDictionaryReader reader)

    at System.Xml.XmlUTF8TextReader.Read()

    at System.Xml.XmlBaseReader.IsStartElement()

    at System.Xml.XmlBaseReader.IsStartElement(XmlDictionaryString localName, XmlDictionaryString namespaceUri)

    at System.ServiceModel.Dispatcher.DataContractSerializerOperationFormatter.DeserializeBody(XmlDictionaryReader reader, MessageVersion version, String action, MessageDescription messageDescription, Object[] parameters, Boolean isRequest)

    at System.ServiceModel.Dispatcher.OperationFormatter.DeserializeBodyContents(Message message, Object[] parameters, Boolean isRequest)

    at System.ServiceModel.Dispatcher.OperationFormatter.DeserializeRequest(Message message, Object[] parameters)

    at System.ServiceModel.Dispatcher.DemultiplexingDispatchMessageFormatter.DeserializeRequest(Message message, Object[] parameters)

    at System.ServiceModel.Dispatcher.UriTemplateDispatchFormatter.DeserializeRequest(Message message, Object[] parameters)

    at System.ServiceModel.Dispatcher.CompositeDispatchFormatter.DeserializeRequest(Message message, Object[] parameters)

    at System.ServiceModel.Dispatcher.DispatchOperationRuntime.DeserializeInputs(MessageRpc& rpc)

    at System.ServiceModel.Dispatcher.DispatchOperationRuntime.InvokeBegin(MessageRpc& rpc)

    at System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage5(MessageRpc& rpc)

    at System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage4(MessageRpc& rpc)

    at System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage3(MessageRpc& rpc)

    at System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage2(MessageRpc& rpc)

    at System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage1(MessageRpc& rpc)

    at System.ServiceModel.Dispatcher.MessageRpc.Process(Boolean isOperationContextSet)</P>


    Par contre je n'ai aucun pb a lire des donnees via REST/JSON

    Merci de votre aide
    MCTS Microsoft.
    La conception : Prendre le temps pour gagner du temps.

  2. #2
    Rédacteur
    Avatar de Nathanael Marchand
    Homme Profil pro
    Expert .Net So@t
    Inscrit en
    Octobre 2008
    Messages
    3 615
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Expert .Net So@t
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2008
    Messages : 3 615
    Points : 8 080
    Points
    8 080
    Par défaut
    Manifestement, il essaye de déserialiser du Xml. Il doit falloir préciser à quelque part qu'il faut déserialiser en utilisant un déserialiseur Json et non pas Xml. Je pencherais pour un behavior dans le fichier de config mais pas sur.

  3. #3
    Membre confirmé
    Avatar de topolino
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    1 901
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 1 901
    Points : 637
    Points
    637
    Par défaut
    Non je ne vois rien dans le fichier de config.

    Ca ne viendrait pas de mon object Clients --> DataContract et les DataMember ?
    MCTS Microsoft.
    La conception : Prendre le temps pour gagner du temps.

  4. #4
    Membre confirmé
    Avatar de topolino
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    1 901
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 1 901
    Points : 637
    Points
    637
    Par défaut
    En faite mon JSON cote serveur n'est pas reconnu entant que object afin que je puisse le manipuler

    Mon JSON est peut etre faux alors ? {"ClientID":3624,"ClientShortName":"TEST"}
    MCTS Microsoft.
    La conception : Prendre le temps pour gagner du temps.

  5. #5
    Membre confirmé
    Avatar de topolino
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    1 901
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 1 901
    Points : 637
    Points
    637
    Par défaut
    J'ai enfin trouvé, mon Json doit avoir le meme nom que le parametre attendu dams la methode soit client et non Clients !!!!!

    Interface
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    void UpdateClientByClientId(Entity.Clients client);
    JSON
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    { "client": {"Name":"TEST"} }
    MCTS Microsoft.
    La conception : Prendre le temps pour gagner du temps.

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

Discussions similaires

  1. [EJB / REST / JSON / JQuery] Problème pour faire un POST
    Par saveriu dans le forum Services Web
    Réponses: 1
    Dernier message: 19/04/2012, 11h08
  2. REstFul Json à JSONP
    Par topolino dans le forum Windows Communication Foundation
    Réponses: 0
    Dernier message: 20/03/2012, 09h00
  3. Envoyer du json en post
    Par bensra dans le forum C#
    Réponses: 2
    Dernier message: 14/09/2011, 11h07
  4. WebService REST avec méthode POST
    Par tetsu no tama dans le forum Développement de jobs
    Réponses: 2
    Dernier message: 18/04/2011, 16h19

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