【问题标题】:How to cunsume Java based Soap Web Service in javascript/ajax?如何在 javascript/ajax 中使用基于 Java 的 Soap Web 服务?
【发布时间】:2013-02-14 12:44:50
【问题描述】:

我必须提供一个 .jsp 页面 (index.jsp) 以及我的 Web 服务项目以用于测试目的。 基本上 .jsp 页面有一个 textarea,用于读取作为字符串的 soap 请求并在提交它时会收到soap 响应。

我尝试使用“javax.xml.ws.Service & Dispatch”类,它工作正常。 但现在我被要求提供基于 javascript/ajax 的代码。

谁能帮我解决这个问题。

我在这里提供一个示例 .wsdl 文件:

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<wsdl:definitions xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
    xmlns:tns="http://zensar.com/greeting" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
    xmlns:xsd="http://www.w3.org/2001/XMLSchema" name="Greeting"
    xmlns:grtng="http://zensar.com/greeting/schema"
    targetNamespace="http://zensar.com/greeting">
    <wsdl:types>
        <xsd:schema targetNamespace="http://zensar.com/greeting">
            <xsd:import namespace="http://zensar.com/greeting/schema"
                schemaLocation="Greeting.xsd"></xsd:import>
        </xsd:schema>
    </wsdl:types>
    <wsdl:message name="GreetingRequest">
        <wsdl:part element="grtng:GreetingRequest" name="GreetingRequest" />
    </wsdl:message>
    <wsdl:message name="GreetingResponse">
        <wsdl:part element="grtng:GreetingResponse" name="GreetingResponse" />
    </wsdl:message>
    <wsdl:portType name="GreetingPort">
        <wsdl:operation name="Greeting">
            <wsdl:input message="tns:GreetingRequest" />
            <wsdl:output message="tns:GreetingResponse" />
        </wsdl:operation>
    </wsdl:portType>
    <wsdl:binding name="Greeting" type="tns:GreetingPort">
        <soap:binding style="document"
            transport="http://schemas.xmlsoap.org/soap/http" />
        <wsdl:operation name="Greeting">
            <soap:operation soapAction="http://zensar.com/GreetingWS/Greeting" />
            <wsdl:input>
                <soap:body use="literal" />
            </wsdl:input>
            <wsdl:output>
                <soap:body use="literal" />
            </wsdl:output>
        </wsdl:operation>
    </wsdl:binding>
    <wsdl:service name="Greeting">
        <wsdl:port binding="tns:Greeting" name="Greeting">
            <soap:address location="http://localhost:8085/Greeting/services" />
        </wsdl:port>
    </wsdl:service>
</wsdl:definitions>**

【问题讨论】:

  • 我会考虑在相同的业务逻辑上编写一个基于 JAX-RS/JSON 的服务。这应该比尝试从 Javascript 使用 SOAP 痛苦得多
  • JAX-WS 也可能支持 JSON+plain HTTP 端点用于“常规”/非 REST Web 服务。

标签: java javascript ajax web-services soap-client


【解决方案1】:

就我个人而言,我会说直接通过 javascript 使用 Web 服务有点自虐。

在我看来,javascript 调用服务器端方法(可能是任何架构,c#、java、php 等)然后执行 CURL 请求并将响应发送回前端会容易得多.

当您可以在服务器端使用 Axis2 之类的东西来执行 SOAP 握手的样板重载时,在 javascript 中手动编写一个肥皂端点似乎毫无意义。

【讨论】:

    【解决方案2】:

    你可以试试这个...http://www.ibm.com/developerworks/webservices/library/ws-wsajax/ 这篇文章详细解释了一切。

    【讨论】:

      猜你喜欢
      • 2016-12-30
      • 1970-01-01
      • 2023-03-06
      • 1970-01-01
      • 2013-09-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多