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

У меня есть пользовательский метод обновления, определенный выше. Затем я использую HttpWebRequest для проверки метода, но как я могу передать объект User с помощью этого HttpWebResquest? Следующий код - это то, что я получил до сих пор.Проходящий объект с 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; 

ответ

1

В WCF/REST вы не передаёте объект, вы передадите сообщение.

Если бы я сделал это, в качестве первого шага, я бы создал WCF-клиент, который взаимодействует с сервисом. Я бы рассмотрел сообщения, переданные по проводке клиентом WCF, а затем я реплицировал это сообщение с помощью HttpWebRequest.

+0

спасибо за подсказки –

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(); 

Я нашел решение, мне нужно построить XML-строку, я хочу передать, а затем записать его в поток

Смежные вопросы