WCF web service in node.js

2019-08-12 12:20发布

问题:

Can anyone help me saying whats wrong with the below code

var BasicHttpBinding = require('wcf.js').BasicHttpBinding
, Proxy = require('wcf.js').Proxy
, binding = new BasicHttpBinding()
, proxy = new Proxy(binding,"http://www.restfulwebservices.net/wcf/WeatherForecastService.svc")
, message = '<Envelope xmlns=' +
        '"http://schemas.xmlsoap.org/soap/envelope/">' +
             '<Header />' +
               '<Body>' +
                 '<GetCitiesByCountry xmlns="http://www.restfulwebservices.net/ServiceContracts/2008/01">' +
                  '<Country>korea</Country>' +
                  '</GetCitiesByCountry>' +
                '</Body>' +
           '</Envelope>'

proxy.send(message, "http://www.restfulwebservices.net/ServiceContracts/2008/01/IWeatherForecastService/GetCitiesByCountry", function(response, ctx) {
console.log(response)
});

I'm getting the below error

<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/"><s:Body><s:Fault>  <faultcode xmlns:a="http://schemas.microsoft.com/ws/2005/05/addressing/none">a:ActionNotSupported</faultcode><faultstring xml:lang="en-US">The message with Action 'http://www.restfulwebservices.net/ServiceContracts/2008/01/IWeatherForecastService/GetCitiesByCountry' cannot be processed at the receiver, due to a ContractFilter mismatch at the EndpointDispatcher. This may be because of either a contract mismatch (mismatched Actions between sender and receiver) or a binding/security mismatch between the sender and the receiver.  Check that sender and receiver have the same contract and the same binding (including security requirements, e.g. Message, Transport, None).</faultstring></s:Fault></s:Body></s:Envelope>

Any help on this will be really helpful.

Thanks

回答1:

Wcf.js supports only soap services. You cannot use Wcf.js for REST web services.