我有一个RESTful WCF服务功能,但它没有通过RestSharp客户端正确序列化。
[ServiceContract]
public interface IRestDragon
{
[OperationContract(Name = "getconfig")]
[WebInvoke(Method = "GET", UriTemplate = "getconfig/{id}", BodyStyle = WebMessageBodyStyle.Wrapped,
ResponseFormat = WebMessageFormat.Json, RequestFormat = WebMessageFormat.Json)]
DragonConfig GetConfig(string id);
}
public class RestDragon : IRestDragon
{
public DragonConfig GetConfig(string id)
{
var config = new DragonConfig {Name = "Test", Data = "DAtaaaaaa"};
return config;
}
}
以下是我使用该服务的方式:
static void Main(string[] args)
{
Console.ReadLine();
var client = new RestClient("http://localhost:5463/RESTDragon.svc");
client.AddDefaultHeader("ContentType", "application/json");
var request = new RestRequest("/getconfig/11123") {Method = Method.GET, RequestFormat = DataFormat.Json};
var response = client.Execute<DragonConfig>(request);
Console.WriteLine("Response: " + response.Content);
Console.ReadLine();
}
然而它正在回归:
Response: {"getconfigResult":{"Data":"DAtaaaaaa","Name":"Test"}}
我无法通过response.Data。*访问反序列化数据。它返回null,数据显示在内容中,但是以JSON格式显示,带有奇怪的getconfigResult标识符。
答案 0 :(得分:0)
您需要访问response.Data
而不是response.Content
来获取反序列化的对象。
答案 1 :(得分:0)
设置BodyStyle = WebMessageBodyStyle.Bare更正了问题。