Передача объекта с WCF RESTful - PullRequest
       13

Передача объекта с WCF RESTful

1 голос
/ 12 октября 2009
  [WebInvoke(Method = "PUT", UriTemplate = "users/{username}")]
  [OperationContract]
  void PutUser(string username, User newValue);//update a user

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

     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;

Ответы [ 2 ]

3 голосов
/ 12 октября 2009
   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>userA@example.com</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, которую я хочу передать, и затем записать ее в поток

1 голос
/ 12 октября 2009

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...