2009-10-12 8 views
1
[WebInvoke(Method = "PUT", UriTemplate = "users/{username}")] 
    [OperationContract] 
    void PutUser(string username, User newValue);//update a user 

J'ai une méthode utilisateur de mise à jour définie comme indiqué ci-dessus. Puis j'utilise un HttpWebRequest pour tester la méthode, mais comment puis-je passer l'objet Utilisateur avec ce HttpWebResquest? Le code suivant est ce que j'ai obtenu jusqu'ici.Passer un objet avec WCF RESTful

 string uri = "http://localhost:8080/userservice/users/userA"; 
    HttpWebRequest req = WebRequest.Create(uri) as HttpWebRequest; 
    req.Method = "PUT"; 
    req.ContentType = " application/xml"; 
    req.Proxy = null; 

Répondre

1

Dans WCF/REST, vous ne transmettez pas d'objet, vous transmettez un message. Si je faisais cela, dans un premier temps, je voudrais créer un client WCF qui interagit avec le service. Je voudrais examiner les messages transmis sur le fil par le client WCF, puis je répliquerais ce message avec le HttpWebRequest.

+0

merci pour les conseils –

3
string uri = "http://localhost:8080/userservice/users/userA"; 
    string user = "<User xmlns=\"http://schemas.datacontract.org/2004/07/RESTful\" xmlns:i=\"http://www.w3.org/2001/XMLSchema-instance\"><DOB>2009-01-18T00:00:00</DOB><Email>[email protected]</Email><Id>1</Id><Name>Sample User</Name><Username>userA</Username></User>"; 
     byte[] reqData = Encoding.UTF8.GetBytes(user); 

     HttpWebRequest req = WebRequest.Create(uri) as HttpWebRequest; 
     req.Method = "POST"; 
     req.ContentType = " application/xml"; 
     req.ContentLength = user.Length; 
     req.Proxy = null; 
     Stream reqStream = req.GetRequestStream(); 
     reqStream.Write(reqData, 0, reqData.Length); 

     HttpWebResponse resp = req.GetResponse() as HttpWebResponse; 
     string code = resp.StatusCode.ToString(); 

     //StreamReader sr = new StreamReader(resp.GetResponseStream()); 
     //string respStr = sr.ReadToEnd(); 
     Console.WriteLine(code); 
     Console.Read(); 

Je trouve la solution, je dois construire la chaîne xml que je veux transmettre, puis l'écrire dans le flux

Questions connexes