How to support multiple formats using query parameter in wcf Rest Service
How to get both json and xml formats in WCF Rest Service
1) Create WCF Service application
2) Add interface file+Class file+ .svc file
Interface file: interface1.cs
Class file: class1.cs
Service file: Service2.svc
3) interface1.cs
using System.ServiceModel;
using System.ServiceModel.Web;
using System.Runtime.Serialization;
using System.ServiceModel.Web;
using System.Runtime.Serialization;
namespace WcfService1
{
[ServiceContract]
interface Interface1
{
[WebGet]
Person GetPerson(String format);
}
[DataContract]
public class Person
{
[DataMember] public int id{get;set;}
[DataMember] public String Name{get;set;}
[DataMember] public DateTime Dob{get;set;}
}
}
interface Interface1
{
[WebGet]
Person GetPerson(String format);
}
[DataContract]
public class Person
{
[DataMember] public int id{get;set;}
[DataMember] public String Name{get;set;}
[DataMember] public DateTime Dob{get;set;}
}
}
}
4) Class1.cs
namespace WcfService1
{
[ServiceBehavior(IncludeExceptionDetailInFaults=true)]
public class Class1:Interface1
{
public Person GetPerson(String format)
{
[ServiceBehavior(IncludeExceptionDetailInFaults=true)]
public class Class1:Interface1
{
public Person GetPerson(String format)
{
WebOperationContext wc = WebOperationContext.Current;
if (format.=="json")
{
wc.OutgoingResponse.ContentType = "application/json";
wc.OutgoingResponse.Format = WebMessageFormat.Json;
}
else if (format.=="xml")
{
wc.OutgoingResponse.ContentType = "text/xml";
wc.OutgoingResponse.Format = WebMessageFormat.Xml;
}
return new Person { id = 102, Dob = DateTime.Now.AddYears(-40), Name = "Peter"};
}
}
}
WebOperationContext wc = WebOperationContext.Current;
if (format.=="json")
{
wc.OutgoingResponse.ContentType = "application/json";
wc.OutgoingResponse.Format = WebMessageFormat.Json;
}
else if (format.=="xml")
{
wc.OutgoingResponse.ContentType = "text/xml";
wc.OutgoingResponse.Format = WebMessageFormat.Xml;
}
return new Person { id = 102, Dob = DateTime.Now.AddYears(-40), Name = "Peter"};
}
}
}
5) Service2.svc
<%@
ServiceHost
Factory="System.ServiceModel.Activation.WebServiceHostFactory"
Service="WcfService1.Class1"
%>
ServiceHost
Factory="System.ServiceModel.Activation.WebServiceHostFactory"
Service="WcfService1.Class1"
%>
6) In Web.config
<system.serviceModel>
<services>
<service name="WcfService1.Class1">
<endpoint binding="webHttpBinding"
contract="WcfService1.Interface1"
behaviorConfiguration="restBehaviour"
></endpoint>
</service>
</services>
<behaviors>
<endpointBehaviors>
<behavior name="restBehaviour">
<webHttp helpEnabled="true" faultExceptionEnabled="true"/>
</behavior>
</endpointBehaviors>
</behaviors>
</system.serviceModel>
<services>
<service name="WcfService1.Class1">
<endpoint binding="webHttpBinding"
contract="WcfService1.Interface1"
behaviorConfiguration="restBehaviour"
></endpoint>
</service>
</services>
<behaviors>
<endpointBehaviors>
<behavior name="restBehaviour">
<webHttp helpEnabled="true" faultExceptionEnabled="true"/>
</behavior>
</endpointBehaviors>
</behaviors>
</system.serviceModel>
6) Just run http://localhost:port/Service2.svc
U will get help page
7) How to consume WCF Rest Service JSON format
Uri uri = new Uri("http://localhost:23454/Service2.svc/GetPerson?format=json");WebClient client = new WebClient();
client.Headers.Add(HttpRequestHeader.ContentType, "application/json");
Stream jsonSTream=
client.OpenRead(uri);
StreamReader reader =
new StreamReader(jsonSTream);
String strPerson=reader.ReadToEnd();
Console.WriteLine(strPerson);
Console.ReadLine();
JSON OUTPUT:
{"Dob":"\/Date(120135205873-0700)\/","Name":"Peterapplication\/json","id":102}
7) How to consume WCF Rest Service XML format
Uri uri = new Uri("http://localhost:23454/Service2.svc/GetPerson?format=xml");WebClient client = new WebClient();
client.Headers.Add(HttpRequestHeader.ContentType, "text/xml");
Stream jsonSTream=
client.OpenRead(uri);
StreamReader reader =
new StreamReader(jsonSTream);
String strPerson=reader.ReadToEnd();
Console.WriteLine(strPerson);
Console.ReadLine();
XML Output:
<Person xmlns="http://schemas.datacontract.org/2004/07/WcfService1" xmlns:i="htt
p://www.w3.org/2001/XMLSchema-instance"><Dob>1973-10-22T03:53:29.6915206-07:00</
Dob><Name>Petertext/xml</Name><id>102</id></Person>
No comments:
Post a Comment