首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >javascript和web服务WSDL

javascript和web服务WSDL
EN

Stack Overflow用户
提问于 2012-06-24 17:49:45
回答 2查看 19.5K关注 0票数 12

我想用javascript调用一个web服务。我有一个表单,其中我给出了一些参数(int),并希望得到结果--如何使用javascript完成它?

以下是WSDL文件

代码语言:javascript
复制
<definitions xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:tns="http://lapack.sws4hpsc.uth/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://schemas.xmlsoap.org/wsdl/" targetNamespace="http://lapack.sws4hpsc.uth/" name="DgesvSampleWsService">
<ns1:Policy xmlns:ns1="http://www.w3.org/ns/ws-policy" wsu:Id="DgesvSampleWsPortBinding_MTOM_Policy">
<ns1:ExactlyOne>
<ns1:All>
<ns2:OptimizedMimeSerialization xmlns:ns2="http://schemas.xmlsoap.org/ws/2004/09/policy/optimizedmimeserialization" ns1:Optional="true"/>
</ns1:All>
</ns1:ExactlyOne>
</ns1:Policy>
<types>
<xsd:schema>
<xsd:import namespace="http://lapack.sws4hpsc.uth/" schemaLocation="http://83.212.96.238:8080/DgesvSampleWs/DgesvSampleWsService?xsd=1"/>
</xsd:schema>
</types>
<message name="_dgesv">
<part name="parameters" element="tns:_dgesv"/>
</message>
<message name="_dgesvResponse">
<part name="parameters" element="tns:_dgesvResponse"/>
</message>
<portType name="DgesvSampleWs">
<operation name="_dgesv">
<input message="tns:_dgesv"/>
<output message="tns:_dgesvResponse"/>
</operation>
</portType>
<binding name="DgesvSampleWsPortBinding" type="tns:DgesvSampleWs">
<ns3:PolicyReference xmlns:ns3="http://www.w3.org/ns/ws-policy" URI="#DgesvSampleWsPortBinding_MTOM_Policy"/>
<soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="document"/>
<operation name="_dgesv">
<soap:operation soapAction=""/>
<input>
<soap:body use="literal"/>
</input>
<output>
<soap:body use="literal"/>
</output>
</operation>
</binding>
<service name="DgesvSampleWsService">
<port name="DgesvSampleWsPort" binding="tns:DgesvSampleWsPortBinding">
<soap:address location="http://83.212.96.238:8080/DgesvSampleWs/DgesvSampleWsService"/>
</port>
</service>
</definitions>

第二个

代码语言:javascript
复制
<definitions xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:tns="http://lapack.sws4hpsc.uth/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://schemas.xmlsoap.org/wsdl/" targetNamespace="http://lapack.sws4hpsc.uth/" name="DgtsvSampleWsService">
<ns1:Policy xmlns:ns1="http://www.w3.org/ns/ws-policy" wsu:Id="DgtsvSampleWsPortBinding_MTOM_Policy">
<ns1:ExactlyOne>
<ns1:All>
<ns2:OptimizedMimeSerialization xmlns:ns2="http://schemas.xmlsoap.org/ws/2004/09/policy/optimizedmimeserialization" ns1:Optional="true"/>
</ns1:All>
</ns1:ExactlyOne>
</ns1:Policy>
<types>
<xsd:schema>
<xsd:import namespace="http://lapack.sws4hpsc.uth/" schemaLocation="http://83.212.96.238:8080/DgtsvSampleWs/DgtsvSampleWsService?xsd=1"/>
</xsd:schema>
</types>
<message name="_dgtsv">
<part name="parameters" element="tns:_dgtsv"/>
</message>
<message name="_dgtsvResponse">
<part name="parameters" element="tns:_dgtsvResponse"/>
</message>
<portType name="DgtsvSampleWs">
<operation name="_dgtsv">
<input message="tns:_dgtsv"/>
<output message="tns:_dgtsvResponse"/>
</operation>
</portType>
<binding name="DgtsvSampleWsPortBinding" type="tns:DgtsvSampleWs">
<ns3:PolicyReference xmlns:ns3="http://www.w3.org/ns/ws-policy" URI="#DgtsvSampleWsPortBinding_MTOM_Policy"/>
<soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="document"/>
<operation name="_dgtsv">
<soap:operation soapAction=""/>
<input>
<soap:body use="literal"/>
</input>
<output>
<soap:body use="literal"/>
</output>
</operation>
</binding>
<service name="DgtsvSampleWsService">
<port name="DgtsvSampleWsPort" binding="tns:DgtsvSampleWsPortBinding">
<soap:address location="http://83.212.96.238:8080/DgtsvSampleWs/DgtsvSampleWsService"/>
</port>
</service>
</definitions>
EN

回答 2

Stack Overflow用户

发布于 2018-05-29 12:31:31

这里是一种可能的方法,假设您将wsdl放入文件request.wsdl中,并假设远程服务器是可访问的,并且具有Access-Control-Allow-Origin: *头。

代码语言:javascript
复制
//wsdl request
var client = new XMLHttpRequest();
client.open('GET', 'request.wsdl');
client.onreadystatechange = function () {
  var request = client.responseText;//here the wsdl

        //SOAP request
        var client2 = new XMLHttpRequest();
        client2.open('POST', 'http://83.212.96.238:8080/DgesvSampleWs/DgesvSampleWsService', true);

        client2.onreadystatechange = function () {
          if (client2.readyState == 4) {
            if (client2.status == 200) {
              console.log(client.responseText);//here the response
            }
          }
        }
        client2.setRequestHeader('Content-Type', 'text/xml');
        client2.send(request);
}

client.send();

其思想是执行和ajax调用wsdl定义,在它的回调中,执行另一个要调用的ajax。这个域,http://83.212.96.238:808,它没有给我回应,但我认为这个方法是有效的。

票数 5
EN

Stack Overflow用户

发布于 2018-05-24 04:13:41

  1. 创建SOAP请求并调用调用方。XML:Simplest SOAP example
  2. Get 响应并解析Parse XML using JavaScript

ref:

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11179780

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档