There is a self hosted WCF REST service, need to send an xml post message to it.
Seems like this question was asked and answered several times, but after trying every solution I still didn`t get any success.
Server: interface
[ServiceContract]
public interface ISDMobileService
{
[OperationContract]
[WebInvoke(Method = "POST", BodyStyle=WebMessageBodyStyle.Bare, RequestFormat = WebMessageFormat.Xml, ResponseFormat=WebMessageFormat.Xml)]
int ProcessMessage(string inputXml);
}
Server: class
public class Service : ISDMobileService
{
public int ProcessMessage(string inputXml)
{
Console.WriteLine( "ProcessMessage : " + inputXml );
return 0;
}
}
Server: hosting
class Program
{
static void Main(string[] args)
{
WebServiceHost host = new WebServiceHost(typeof(Service), new Uri("http://172.16.3.4:7310"));
WebHttpBinding webbind = new WebHttpBinding(WebHttpSecurityMode.None);
ServiceEndpoint ep = host.AddServiceEndpoint(typeof(ISDMobileService), webbind, "");
ServiceDebugBehavior stp = host.Description.Behaviors.Find<ServiceDebugBehavior>();
stp.HttpsHelpPageEnabled = false;
host.Open();
Console.WriteLine("Service is up and running. Press 'Enter' to quit >>>");
Console.ReadLine();
host.Close();
}
}

Request from fiddler without anything in the “Request Body” works just fine and fires break point inside ProcessMessage method of Service class, any variant of data in “Request Body”,
e.g.: test || <inputXml>test</inputXml> || inputXml=”test” || <?xml version=”1.0″ encoding=”UTF-8″ ?><inputXml>test</inputXml> etc. gives HTTP/1.1 400 Bad Request
Will appreciate any help with this
A few things:
WebServiceHost, you don’t need to explicitly add the service endpoint (call tohost.AddServiceEndpoint(...)in your Main.stringparameter; if you want to send it in XML, you need to wrap the string in the appropriate element. Try this body and it should work:Body:
You can also send it in different formats, such as JSON. This request should work as well