如何在JavaScript中使用soap

时间:2010-04-05 06:44:54

标签: php javascript web-services soap

我正在尝试在javascript中使用SOAP,但我没有得到如何启动它。 这是我用PHP编写的代码示例,它工作正常。我想用Javascript编写这段代码。在下面的代码中,我从www.example.com调用一个api,并且为了调用某些api,我们需要传递一些参数。

    $soapClient = new SoapClient("https://www.example.com/WSDL");     
    $param_sh = array( ); 
    $header = new SoapHeader('http://somesite.com/action/', 'user_credential', $param_sh); 
    $soapClient->__setSoapHeaders(array($header)) 
    $param = array("with some parameter");
    $contents = $soapClient->__call("name_of_method",array($param)); 

    print($contents);  

3 个答案:

答案 0 :(得分:4)

现在,自从提出这个问题超过5年以来,Javascript和网络已经发生了很多事情,所以:

  • 可以发送跨源请求,现代浏览器100%正常(如果你发送它们的服务器允许CORS,当然)

    < / LI>
  • serverclient方javascript都有很多库。

  • 关于StackOverflow的主题有很多问题。

答案 1 :(得分:3)

假设您正在谈论浏览器内的Javascript,您将无法使用SOAP。浏览器遵循同源策略,它(松散地)说你不能从javascript发出跨域请求。这意味着,如果SOAP服务(或任何HTTP请求)与浏览器页面当前所在的域相同,则您只能发出请求。由于这个限制/功能,没有人在Javascript中实现SOAP客户端时遇到很多麻烦(尽管它们可能确实存在)。

最好的办法是通过PHP进行SOAP调用,然后从您的网页(通过javascript)向创建实际SOAP请求的PHP页面发出AJAX请求。

答案 2 :(得分:3)

JavaScript没有开箱即用的SOAP库,但您可以谷歌并找到它们,例如here。并非这不会解决@Alan引用的限制。 Web服务仍然需要位于源服务器上。