Suppose this is our simple WCF service which takes the name as input and returns the resulting string with Hello appended to it.
namespace HelloWorldWCFService{
[ServiceContract]
public interface IService1{
[OperationContract]
string GetData(string name);}
}
namespace HelloWorldWCFService{
public class Service1 : IService1 {
public string GetData(string name) {
return “Hello “ + name;
}}}
It uses BasicHttpBinding.
Now this would be our JavaScript function which can consume the above WCF service.
function MyRequest() {var xmlhttp = new XMLHttpRequest();
xmlhttp.open(‘POST’, ‘http://localhost:64833/Service1.svc’, false);xmlhttp.setRequestHeader(‘SOAPAction’, ‘http://tempuri.org/IService1/GetData’);
xmlhttp.setRequestHeader(‘Content-Type’, ‘text/xml’);
var data = ”;
data += ‘<s:Envelope xmlns:s=”http://schemas.xmlsoap.org/soap/envelope/”>’;data += ‘ <s:Body>’;
data += ‘ <GetData xmlns=”http://tempuri.org/”>’;
data += ‘ <name>Nishant</name>’;
data += ‘ </GetData>’;
data += ‘ </s:Body>’;
data += ‘</s:Envelope>’;xmlhttp.send(data);
alert(“status = “ + xmlhttp.status);alert(“status text = “ + xmlhttp.statusText);
alert(xmlhttp.responseText);
}
Here for
xmlhttp.setRequestHeader(‘SOAPAction’, ‘http://tempuri.org/IService1/GetData’);
We can get the value for SOAPAction from the wsdl of the WCF service.
Open the http://localhost:64833/Service1.svc?wsdl
Search for soapAction there.
We would find soapAction value there.
<wsdl:operation name=”GetData“> <soap:operation
soapAction=”http://tempuri.org/IService1/GetData“ style=”document” />
<wsdl:input>
Hope it helps !
Discover more from Nishant Rana's Weblog
Subscribe to get the latest posts sent to your email.

fyi, security restrictions on firefox prevent this code from working when trying to call cross domain. The port is part of the domain and so this code only works for port 64833.
LikeLike
Thax for the post, is there a way to call WCF with wsHttpBinding from a JavaScript.
LikeLike
This is the most simple code out there to call a WCF service that works. Thank you.
LikeLike
hi thanks for the info…
i tried the above method in a simple html, it works !
however when i put it in crm 2011, it return a message saying “access is denied”…
any clue to this…?
leonardo vincci
LikeLike
Hi, thank you for this excellent tutorial, I’ve tried this one and worked correctly,
I’m trying to consume a webservice in svc like this “bool GetData(int value, out DataSet dsData);”
As you can see, the webmethod returns a value, and the important data is sent in the out dataset, How can I obtain that info?
Other thing… As I said before, this tuto works perfectlly but only in IE, when I try this on chrome nothing happens, Why?
Thank You very much.
LikeLike
Hi,
I have a service http://krooe.com/Services/TaskService.svc and the wsdl http://krooe.com/Services/TaskService.svc?wsdl. It has methods GetTasks. I am not able to call this web service method based on above mentioned approach. Can you please help.
LikeLike
it returns a message saying “access is denied” in the below line xmlhttp.open(‘POST’, ‘http://test.svc’, false);
… please help
LikeLike