`
xiongpan0807
  • 浏览: 16594 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
最近访客 更多访客>>
社区版块
存档分类
最新评论

采用SOAP方式访问web服务

阅读更多

1.这是jax-ws方式访问web 服务的时候生成的一个 soap消息,那么 要是我们自己可以创建这样的一个消息,我们应该就可以完成服务的请求

- <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:q0="http://soap.xiongpan.com/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <soapenv:Body>
       <q0:add>
            <a>1</a>
            <b>2</b>
            </q0:add>
       </soapenv:Body>
  </soapenv:Envelope>



先看看  SOAPMessage 的一个概括图 记清楚这个图 我们就很好写代码了



 

服务端发布的wsdl的如下

This XML file does not appear to have any style information associated with it. The document tree is shown below.
<!--
Published by JAX-WS RI at http://jax-ws.dev.java.net. RI's version is JAX-WS RI 2.1.6 in JDK 6.
-->
<!--
Generated by JAX-WS RI at http://jax-ws.dev.java.net. RI's version is JAX-WS RI 2.1.6 in JDK 6.
-->
<definitions xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:tns="http://soap.xiongpan.com/" xmlns:xsd="http://www.w3.org/2001/XMLSchema"xmlns="http://schemas.xmlsoap.org/wsdl/" targetNamespace="http://soap.xiongpan.com/" name="ServerUtilImplService">
<types>
<xsd:schema>
<xsd:import namespace="http://soap.xiongpan.com/" schemaLocation="http://localhost:9595/ns?xsd=1"/>
</xsd:schema>
</types>
<message name="add">
<part name="parameters" element="tns:add"/>
</message>
<message name="addResponse">
<part name="parameters" element="tns:addResponse"/>
</message>
<portType name="ServerUtil">
<operation name="add">
<input message="tns:add"/>
<output message="tns:addResponse"/>
</operation>
</portType>
<binding name="ServerUtilImplPortBinding" type="tns:ServerUtil">
<soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="document"/>
<operation name="add">
<soap:operation soapAction=""/>
<input>
<soap:body use="literal"/>
</input>
<output>
<soap:body use="literal"/>
</output>
</operation>
</binding>
<service name="ServerUtilImplService">
<port name="ServerUtilImplPort" binding="tns:ServerUtilImplPortBinding">
<soap:address location="http://localhost:9595/ns"/>
</port>
</service>
</definitions>



客户端用soap的方式去访问

package com.xiongpan.soap;
import java.net.URL;
import javax.xml.namespace.QName;
import javax.xml.soap.MessageFactory;
import javax.xml.soap.SOAPBody;
import javax.xml.soap.SOAPBodyElement;
import javax.xml.soap.SOAPEnvelope;
import javax.xml.soap.SOAPMessage;
import javax.xml.soap.SOAPPart;
import javax.xml.ws.Dispatch;
import javax.xml.ws.Service;

public class ClientTest {

       public static void main(String[] args) throws Exception{
            
             ///创建一个消息工厂
              MessageFactory factory=MessageFactory. newInstance();
             ///创建一个消息
              SOAPMessage  message=  factory.createMessage();
             //获得SOAPPART
             SOAPPart part= message.getSOAPPart();
            
             //获得信封(envelope)
             SOAPEnvelope  envelope=part.getEnvelope();
             //获得SOAP的body
             SOAPBody body= envelope.getBody();
             //创建一个qname  qname就是一个带命名空间的xml片段 下面这段会被翻译为
             /*
              <ns:add xmlns:ns="http://soap.xiongpan.com/">
              </ns:add>
              */
             QName qname= new QName( "http://soap.xiongpan.com/" , "add" , "ns" );
             
             SOAPBodyElement element= body.addBodyElement(qname);
             element.addChildElement( "a").setValue( "22");
            
             element.addChildElement( "b").setValue( "332");
      
            message.writeTo(System. out);
             //创建要访问的服务
            URL url= new URL( "http://localhost:9595/ns?wsdl" );
            QName sqname= new QName("http://soap.xiongpan.com/" ,"ServerUtilImplService" );
            Service service=Service. create(url,sqname);
            
             //创建Dispatch
            Dispatch<SOAPMessage> dispatch=service
                        .createDispatch( new QName("http://soap.xiongpan.com/" ,"ServerUtilImplPort" ), SOAPMessage.class , Service.Mode.MESSAGE );
            
            SOAPMessage responeMessage=   dispatch.invoke(message);
            System. out.println( "invoke----------------------------------" );
            responeMessage.writeTo(System. out);
            
            
      }
}



执行结果:
     发送的请求

<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"><SOAP-ENV:Header/><SOAP-ENV:Body><ns:add xmlns:ns="http://soap.xiongpan.com/"><a>22</a><b>332</b></ns:add></SOAP-ENV:Body></SOAP-ENV:Envelope>



invoke----------------------------------
返回的结果:

<S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/"><S:Header/><S:Body><ns2:addResponse xmlns:ns2="http://soap.xiongpan.com/"><add>354</add></ns2:addResponse></S:Body></S:Envelope>







 

  • 大小: 114.7 KB
分享到:
评论

相关推荐

    基于SOAP网关的WebServices访问控制

    在基于SOAP网关的Web Services访问控制架构中,XACML被用来定义和执行授权策略,以确保只有经过认证和授权的用户才能访问Web Services。 #### 结论 本文提出的基于SOAP网关的Web Services访问控制架构,不仅解决了...

    使用Soap消息调用Web Services

    HelloWorld-service.wsdl 文件描述了 Web Services 的服务访问点,而 HelloWorld-binding.wsdl 文件描述了 Web Services 的通信消息的数据结构、每个访问点支持的操作、特定的断口类型的具体协议和数据格式规范的...

    java 使用soap进行webservers服务(xml)

    其中,简单对象访问协议(Simple Object Access Protocol,简称SOAP)作为Web服务中最常见的通信协议之一,因其规范性、安全性及易理解性等特点而被广泛采用。本文将基于提供的文件信息,详细介绍如何使用Java和SOAP...

    基于SOAP消息组合变异的web服务漏洞测试

    - **SOAP消息**:简单对象访问协议(SOAP)是一种基于XML的标准协议,用于在Web服务之间交换结构化的信息。它定义了如何封装信息,以及如何处理请求和响应。 - **组合变异**:指在测试过程中同时改变多个参数,以...

    Soap方式调用WebService

    - **创建SOAP消息**:客户端根据服务的WSDL(Web Service Description Language)文档,构造符合SOAP规范的请求消息。 - **发送请求**:客户端通过HTTP协议将SOAP消息发送到服务端的指定URL。 - **服务处理**:...

    VB.NET/JAVA 采用SOAP 与Webservice发送/接收数据

    ### VB.NET与Java通过SOAP协议访问WebService的知识点 #### 一、基础知识介绍 - **SOAP (Simple Object Access Protocol)**: 是一种轻量级协议,用于交换结构化的信息。它定义了用于构造消息以及进行信息传输的...

    ASP_NET Web服务高级编程(上)

    Web服务是一种通过互联网进行通信的软件,它允许不同的应用程序之间交换数据,不受操作系统或编程语言的限制,采用标准的XML(Extensible Markup Language)进行数据封装和传输。 在ASP.NET环境中,Web服务通常以...

    WEB服务技术2013年课件

    在2013年的课程中,重点可能包括了SOAP(简单对象访问协议)、REST(表述性状态转移)以及WSDL(Web服务描述语言)等关键概念。 SOAP是Web服务早期广泛采用的通信协议,它定义了一种结构化的XML消息格式,用于交换...

    简单对象访问协议(SOAP)初级指南

    此外,SOAP还促进了Web服务的发展,通过定义WSDL(Web服务描述语言)和UDDI(统一描述、发现和集成)标准,使得服务发现和互操作性得到进一步提升。 总的来说,SOAP是分布式计算领域的一个重要里程碑,它通过简单、...

    REST服务构建的web应用的优势和不足

    真正潜在风险存在于 REST 灵活的使用方式上,既可以被服务器端调用又能被客户端调用,所以一开始就要明确地区分用户访问权限和系统访问权限,区分 Web 页面权限和 REST 服务权限,但有时在开发中经常混为一谈,所以...

    基于Servlet发送、接收SOAP消息的java源程序

    在Web服务开发中,SOAP(简单对象访问协议)是一种常见的消息传输协议,用于在不同系统间交换结构化和类型化的信息。Servlet作为Java Web应用程序的核心组件,常被用来处理HTTP请求和响应。本教程将深入探讨如何使用...

    WEb服务r使用WEb服务使用

    Web服务的核心技术包括SOAP(简单对象访问协议)、WSDL(Web服务描述语言)和UDDI(统一描述、发现和集成)。 1. SOAP(Simple Object Access Protocol):SOAP是Web服务的标准通信协议,它使用XML(可扩展标记语言...

    webservice工具,针对wsdl、soap进行测试的小软件

    综上所述,Web服务测试工具对于开发和维护高质量的Web服务至关重要,而`wscaller`这样的工具则提供了方便快捷的方式来验证和测试基于WSDL和SOAP的Web服务。通过使用这些工具,开发者可以确保他们的服务能够正确、...

    天气预报的web服务

    1. **Web服务的基本原理**:Web服务基于开放标准,如SOAP(简单对象访问协议)和REST(表述性状态转移)架构,使用XML(可扩展标记语言)进行数据交换。SOAP服务通常采用WSDL(Web服务描述语言)定义服务接口,而...

    SOAP1.2协议规范

    综上所述,SOAP1.2协议规范为Web服务提供了一套标准化的通信协议,使得服务提供者和服务消费者能以统一的方式交换信息,从而促进了分布式系统的互操作性。通过理解并应用这些知识点,开发者可以构建出高效、可靠的...

    WEB服务的作用

    这对于构建分布式系统特别有用,例如,可以将数据访问逻辑封装成Web服务,部署在另一台服务器上,从而实现功能模块的解耦。 WebService的最大优点是其异构平台间的互通性。它利用XML(可扩展标记语言)、XSD(XML ...

    浅谈SoapWeb Service架构及其应用

    总之,SOAP Web Service作为一种成熟且广泛采用的分布式应用程序模型,为企业和个人提供了高效、灵活的服务交互方式。随着技术的不断发展,尽管出现了RESTful API等新的服务架构,SOAP Web Service仍然在许多领域...

Global site tag (gtag.js) - Google Analytics