我正在使用Node.js和wcf.js模块(npm install wcf.js) 我尝试使用的服务是https://webservice.kareo.com/services/soap/2.1/
我已经知道这个https://webservice.kareo.com/services/soap/2.1/KareoServices.svc?xsd=xsd0包含服务要接收的内容,而这些https://webservice.kareo.com/services/soap/2.1/KareoServices.svc?wsdl=wsdl0是提交它们的原因。
我如何弄清楚我应该如何构建请求呢? 这是我的wcf.js
给出的例子var BasicHttpBinding = require('wcf.js').BasicHttpBinding
, Proxy = require('wcf.js').Proxy
, binding = new BasicHttpBinding()
, proxy = new Proxy(binding, " https://webservice.kareo.com/services/soap/2.1/")
, message = '<Envelope xmlns=' +
'"http://schemas.xmlsoap.org/soap/envelope/">' +
'<Header />' +
'<Body>' +
'<GetData xmlns="http://tempuri.org/">' +
'<value>GetAppointments</value>' +
'</GetData>' +
'</Body>' +
'</Envelope>'
proxy.send(message, "http://www.kareo.com/api/schemas/KareoServices/GetAppointments", function(response, ctx) {
console.log(response)
});
答案 0 :(得分:2)
根据wsdl,此服务使用BasicHttpBinding,这意味着不使用ws-secrutiy或寻址。在这种情况下,wcf.js只会在使用request之上为您带来很多附加值,但您仍然可以使用wcf.js.你需要正确设置3个值 - url,soapaction(代理ctor中的第二个参数)和soap。我建议通过为此服务生成ac#client获取所有3个值,验证客户端是否正常工作,然后设置fiddler并将客户端指向“http:// localhost:8888”,这样您就可以在fiddler中看到所有3个值并且可以配置它们。
答案 1 :(得分:1)
我对wcf.js没有任何经验但是,如果你只是需要看看你应该如何构建你的肥皂信封来提出请求,我建议你启动wcftestclient并连接到该服务。连接后,您可以调用任何操作并查看soap消息。这是GetAppointments操作的空请求。
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
<s:Header>
<Action s:mustUnderstand="1" xmlns="http://schemas.microsoft.com/ws/2005/05/addressing/none">http://www.kareo.com/api/schemas/KareoServices/GetAppointments</Action>
</s:Header>
<s:Body>
<GetAppointments xmlns="http://www.kareo.com/api/schemas/">
<request xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
<RequestHeader i:nil="true" />
<Fields i:nil="true" />
<Filter i:nil="true" />
</request>
</GetAppointments>
</s:Body>
</s:Envelope>