1

我正在使用 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是将它们提交到的 uri。

我到底如何弄清楚我应该如何构建请求?这是 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)
});
4

2 回答 2

2

根据 wsdl,此服务使用 BasicHttpBinding,这意味着不使用 ws-secrutiy 或寻址。在这种情况下,除了使用请求之外,wcf.js 并没有给您带来太多附加值,但是您仍然可以使用 wcf.js。您需要正确设置 3 个值 - url、soapaction(代理 ctor 中的第二个参数)和 soap。我建议通过为该服务生成 ac# 客户端来获取所有 3 个值,验证客户端是否正常工作,然后设置 fiddler 并将客户端指向“http://localhost:8888”,这样您将在 fiddler 中看到所有 3 个值并且可以配置它们。

于 2012-06-21T22:10:29.657 回答
1

我对 wcf.js 没有任何经验,但是,如果您只需要了解应该如何构建肥皂信封来发出请求,我建议您启动wcftestclient并连接到该服务。连接后,您可以调用任何操作并查看肥皂消息。这是对 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>
于 2012-06-21T22:10:50.877 回答