您使用什么框架(看起来像旧的 WCf Web Api)来构建您的 RESTful 服务?我强烈推荐使用微软新的 MVC4 Web API。它真正开始成熟并极大地简化了构建 RESTful 服务。在 WCF Web API 即将停止使用的情况下,它将支持它。
您只需将 ModelClass 作为返回类型返回,它会根据请求接受标头自动将其序列化为 XML 或 JSON。您避免编写重复的代码,并且您的服务将支持广泛的客户端。
public class TwitterController : ApiController
{
DataScrapperApi api = new DataScrapperApi();
TwitterAndKloutData data = api.GetTwitterAndKloutData(screenName);
return data;
}
public class TwitterAndKloutData
{
// implement properties here
}
链接
您可以通过仅下载 MVC4 2012 RC 来获取 MVC4 Web Api,也可以下载整个 Visual Studio 2012 RC。
MVC 4:http ://www.asp.net/mvc/mvc4
VS 2012: http: //www.microsoft.com/visualstudio/11/en-us/downloads
对于原始的 wcf web api,试一试。检查接受标头并根据其值生成响应。
var context = WebOperationContext.Current
string accept = context.IncomingRequest.Accept;
System.ServiceModel.Chanells.Message message = null;
if (accept == "application/json")
message = context.CreateJsonResponse<TwitterAndCloutData>(data);
else if (accept == "text/xml")
message = context.CreateXmlResponse<TwitterAndCloutData>(data);
return message;
您可以在发起请求的任何客户端上设置接受标头。这将根据您用于发送请求的客户端类型而有所不同,但任何 http 客户端都可以添加标头。
WebClient client = new WebClient();
client.Headers.Add("accept", "text/xml");
client.DownloadString("domain.com/service");
要访问您将使用的响应标头
WebOperationContext.Current.OutgoingResponse.ContentType = "text/xml";
其他资源:http ://dotnet.dzone.com/articles/wcf-rest-xml-json-or-both