【问题标题】:How to use soap in javascript如何在 JavaScript 中使用肥皂
【发布时间】:2010-04-05 06:44:53
【问题描述】:

我正在尝试在 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);  

【问题讨论】:

    标签: php javascript web-services soap


    【解决方案1】:

    现在,在提出这个问题 5 年多之后,Javascript 和 Web 发生了很多事情,所以:

    • 可以发送跨域请求,现代浏览器对此 100% 可以接受(当然,如果您发送它们的服务器允许 CORS)

    • serverclient 侧 javascript 都有很多库。

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

    【讨论】:

      【解决方案2】:

      假设您在谈论浏览器内的 Javascript,您将无法使用 SOAP。浏览器遵循一种叫做同源策略的东西,它(松散地)说你不能从 javascript 发出跨域请求。这意味着您只能向 SOAP 服务(或任何 HTTP 请求)发出请求,前提是它与浏览器页面当前所在的域相同。由于这个限制/特性,没有人费尽心思用 Javascript 实现 SOAP 客户端(尽管它们可能确实存在)。

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

      【讨论】:

      【解决方案3】:

      JavaScript 没有开箱即用的 SOAP 库,但您可以四处搜索并找到它们,例如 here。并不是说这不会解决@Alan 引用的限制。 Web 服务仍然需要在源服务器上。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2021-06-11
        • 2012-10-22
        • 1970-01-01
        • 1970-01-01
        • 2013-03-14
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多