WCF Rest XML Post
WCF Rest XML Post
DataContract
[DataContract(Namespace = "http://www.test.com/Enrollment")]
public class Enroll
{
[DataMember]
public string ClientId
{
get;
set;
}
[DataMember]
public string AccountNumber
{
get;
set;
}
[DataMember]
public string TaxId
{
get;
set;
}
[DataMember]
public string TaxType
{
get;
set;
}
[DataMember]
public string EmailAddress
{
get;
set;
}
[DataMember]
public string Pin
{
get;
set;
}
[DataMember]
public string State
{
get;
set;
}
}
app.config settings
<system.serviceModel>
<services>
<service name="OEA.REST.EnrollService" behaviorConfiguration="OEABehavior">
<endpoint address="http://localhost:8010/OEA/Service/EnrollService"
binding="webHttpBinding" behaviorConfiguration="webHttp"
contract="OEA.REST.IEnrollService" />
<host>
<baseAddresses>
<add baseAddress="http://localhost:8010/OEA/Service/EnrollService" />
</baseAddresses>
</host>
</service>
</services>
<behaviors>
<endpointBehaviors>
<behavior name="webHttp">
<webHttp/>
</behavior>
</endpointBehaviors>
<serviceBehaviors>
<behavior name="OEABehavior">
<serviceMetadata httpGetEnabled="True" />
<serviceDebug includeExceptionDetailInFaults="True" />
</behavior>
</serviceBehaviors>
</behaviors>
<serviceHostingEnvironment aspNetCompatibilityEnabled="true" />
</system.serviceModel>
client code:
HttpWebRequest req = null;
HttpWebResponse res = null;
try
{
string url = "http://localhost:8010/OEA/Service/EnrollService/enroll";
req = (HttpWebRequest)WebRequest.Create(url);
req.Method = "POST";
req.ContentType = "application/xml; charset=utf-8";
req.Timeout = 30000;
req.Headers.Add("SOAPAction", url);
System.Xml.XmlDocument xmlDoc = new System.Xml.XmlDocument();
xmlDoc.XmlResolver = null;
xmlDoc.Load(@"d:\test.xml");
string sXML = xmlDoc.InnerXml;
req.ContentLength = sXML.Length;
System.IO.StreamWriter sw = new
System.IO.StreamWriter(req.GetRequestStream());
sw.Write(sXML);
sw.Close();
res = (HttpWebResponse)req.GetResponse();
}
catch (Exception ex)
{
System.Console.WriteLine(ex.Message);
}
content of test.xml
<Enroll>
<ClientId>000</ClientId>
<AccountNumber>123</AccountNumber>
<TaxId>123</TaxId>
<TaxType>123</TaxType>
<EmailAddress>123</EmailAddress>
<Pin>123</Pin>
<State>122</State>
</Enroll>
I am getting "Bad Request" exception on req.GetResponse() method call. Just started learning
REST. I am stuck up with POST request. Any help would be highly appreciated. Thanks in
advance.
Answers
Your POST payload should be :
<Enroll xmlns="http://www.test.com/Enrollment">
<ClientId>000</ClientId>
<AccountNumber>123</AccountNumber>
<TaxId>123</TaxId>
<TaxType>123</TaxType>
<EmailAddress>123</EmailAddress>
<Pin>123</Pin>
<State>122</State>
</Enroll>
I updated the xml as per your response. That issue got resolved. Thanks a lot