[WebInvoke(Method="POST",UriTemplate="/Users",RequestFormat=WebMessageFormat.Json)]
public string StudentUsers(Student user)
{
return string.Format("Hello {0}", user.Name);
}
上記のコードは私の REST サービスです。そして私のクライアントコードは次のとおりです。
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
request.Method = "POST";
request.ContentType = "application/json; charset=utf-8";
Student user =
new Stuent {
Name="Test User",
Email = "test@test.com",
Password = "test"
};
DataContractJsonSerializer ser = new DataContractJsonSerializer(user.GetType());
MemoryStream ms = new MemoryStream();
ser.WriteObject(ms, user);
String json = Encoding.UTF8.GetString(ms.ToArray());
StreamWriter writer = new StreamWriter(request.GetRequestStream());
writer.Write(json);
writer.Close();
var httpResponse = (HttpWebResponse)request.GetResponse();
using (var streamReader = new StreamReader(httpResponse.GetResponseStream()))
{
var result = streamReader.ReadToEnd();
Console.WriteLine(result);
}
私のサービスはホストされており、webHttpBinding を使用しています。REST サービスをデバッグするとnull
、Student オブジェクトで受信します。REST サービスで Name、Email、Password をパラメーターとして使用してテストすると、投稿メソッドがデータを送信していると確信しているため、データは正常に投稿されますが、投稿された Json データは Student オブジェクトに変換されません。RESTfull Service がその Json データをオブジェクトに変換することをどこかで読みました。それは本当ですか、それとも明示的に変換する必要がありますか?