精华内容
下载资源
问答
  • WebService通信机制的理解

    万次阅读 2018-04-23 19:38:58
    一、SOA和WebService  SOA(service-Oriented Architecture)是面向服务的架构,是一个组件模型,它将应用程序的不同功能单元(称为服务)通过这些服务之间定义良好的接口和契约联系起来。接口是采用中立的方式进行...

    一、SOA和WebService

          SOA(service-Oriented Architecture)是面向服务的架构,是一个组件模型,它将应用程序的不同功能单元(称为服务)通过这些服务之间定义良好的接口和契约联系起来。接口是采用中立的方式进行定义的,它应该独立于实现服务的硬件平台、操作系统和编程语言。这使得构建在各种各样的系统中的服务可以使用一种统一和通用的方式进行交互。web service是一个平台独立的,低耦合的,自包含的、基于可编程的web的应用程序,可使用开放的XML(标准通用标记语言下的一个子集)标准来描述、发布、发现、协调和配置这些应用程序,用于开发分布式的互操作的应用程序。web service是实现SOA架构的一种技术,XML+XSD,SOAP和WSDL就是构成WebService平台的三大技术。

    1、XML+XSD:

         XML是WebService平台中表示数据的格式。 WebService采用HTTP协议传输数据,采用XML格式封装数据(即XML中说明调用远程服务对象的哪个方法,传递的参数是什么,以及服务对象的返回结果是什么)除了易于建立和易于分析外,XML主要的优点在于它既是平台无关的,又是厂商无关的。 

        XSD(XML Schema)解决了数据数据类型的问题,例如,整形数到底代表什么?16位,32位,64位?它定义了一套标准的数据类型,并给出了一种语言来扩展这套数据类型。WebService平台就是用XSD来作为其数据类型系统的。当你用某种语言(如VB.NET或C#)来构造一个Web service时,为了符合WebService标准,所有你使用的数据类型都必须被转换为XSD类型。

    2、SOAP

       SOAP即简单对象访问协议(Simple Object Access Protocol),它是用于交换XML。WebService通过HTTP协议发送请求和接收结果时,发送的请求内容和结果内容都采用XML格式封装,并增加了一些特定的HTTP消息头,以说明HTTP消息的内容格式,这些特定的HTTP消息头和XML内容格式就是SOAP协议。SOAP提供了标准的RPC方法来调用Web Service。 SOAP协议 = HTTP协议 + XML数据格式。

    3、WSDL

       WSDL是Web Service描述语言,用于描述Web Service及其函数、参数和返回值。它是WebService客户端和服务器端都能理解的标准格式。因为是基于XML的,所以WSDL既是机器可阅读的,又是人可阅读的,这将是一个很大的好处。一些最新的开发工具既能根据你的Web service生成WSDL文档,又能导入WSDL文档,生成调用相应WebService的代理类代码。WSDL文件保存在Web服务器上,通过一个url地址就可以访问到它。客户端要调用一个WebService服务之前,要知道该服务的WSDL文件的地址。WebService服务提供商可以通过两种方式来暴露它的WSDL文件地址:1.注册到UDDI服务器,以便被人查找;2.直接告诉给客户端调用者。

    二、调用webservice的本质

        调用一次webservice的本质如下:

        1、客户端把调用方法参数转换生成XML文档片段(SOAP消息),且该文档必须符合WSDL定义的格式;

        2、通过http协议把XML文档片段传给服务器;

        3、服务器接受到XML文档片段;

        4、服务器解析XML文档片段,提取其中的数据;

        5、服务器执行方法;

        6、服务器把执行方法得到的返回值转换成符合WSDL定义的XML文档片段;

        7、通过http协议把XML文档片段传输给客户端;

        8、客户端接受XML文档片段;

        9、客户端解析XML文档,提取其中的数据。

    所以从本质上来看,要支持webservice,必须支持XML文档解析、生成以及支持网络传输。

    三、基于CXF的webservice开发

    (1)基本开发流程

    1、服务器端

    Ⅰ)开发web service业务接口,该接口用@WebService修饰;

    Ⅱ)开发web service业务接口的实现类,也要用@WebService修饰;

    Ⅲ)使用EndPoint类的静态方法publish()来发布web service。

    2、客户端

    Ⅰ)调用CXF提供的wsdl2java工具,根据WSDL文档生成相应的Java代码(任何语言实现web service都要暴露WSDL文档);

    Ⅱ)找到wsdl2java所生成的类中一个继承了Service的类(该类的实例可当工厂使用);

    Ⅲ)调用Service子类的实例的getXXXPort()方法,返回给远程web service的代理。

    复制代码

    展开全文
  • 基于SOAP的WebService协议的通信机制的接口开发 技术实现要求 WebService每个方法的请求和应答消息的参数,包括两个部分:RequestHeader(消息头)与Body(消息体)。其中,RequestHeader用于存储交易请求以及应答的...

    基于SOAP的WebService协议的通信机制的接口开发

    技术实现要求

    1. WebService每个方法的请求和应答消息的参数,包括两个部分:RequestHeader(消息头)与Body(消息体)。其中,RequestHeader用于存储交易请求以及应答的公共部分和消息的控制数据,起到接口校验的效果;而Body包含交易请求和应答的业务数据。
    2. 具体就是要实现能通过SOAI UI工具进行报文的模拟请求和响应。
      请求报文
      响应报文
      3.基础框架 Spring集成WebService CXF

    具体实现

    实现方法一

    最直观的方法就是可以直接使用字符串对报文进行拼接和截取,可以通过输入的拦截器拦截请求报文,将输入流转换成字符串,再提取字符串字段中的内容,入库,再拼接对应的响应报文格式的字符串输出响应。
    下面提供输入拦截器的相关代码,输出的也类似,网上应该都可以查找到相应资料。(报文实质上也是字符串,可以把它当作字符串来做处理)
    输入拦截器相关代码
    过滤器参考代码:

    public void handleMessage(Message message) throws Fault {
            InputStream is = message.getContent(InputStream.class);
            if (is != null) {
                try {
                    String str = IOUtils.toString(is);
                    int index = str.indexOf("<xsd:labelInfo>");
                    System.out.println(index);
                    // 原请求报文
                    LOG.info("====> 请求原文 xml=\r\n" + str);
                    LOG.info("====> 替换后 xml=\r\n" + str);
                    InputStream ism = new ByteArrayInputStream(str.getBytes());
                    message.setContent(InputStream.class, ism);
                    
                } catch (IOException e) {
                    e.printStackTrace();
                    
                }finally{
                	if(is != null){
                		try {
    						is.close();
    					} catch (IOException e) {
    						// TODO Auto-generated catch block
    						e.printStackTrace();
    					}
                	}
            	
            	}
            }
        }
    

    具体可以在Spring配置文件中添加拦截器配置

    在这里插入图片描述

    实现方法二

    方法一实质上就是纯字符串的拼接和解析,当然你也可以通过一些xml和pojo的工具类来实现对报文的请求和相应,具体可以参考以下的代码。
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    如果采用的是JaxbXmlUtil工具类来实现pojo转成xml可以参考我如下JavaBean的书写格式
    在这里插入图片描述
    @XmlAttribute是xml表空间的头部
    @XmlElement是xml的元素(具体使用方法可以自行百度)
    在这里插入图片描述
    一层一层的嵌套下去,这样子的XML转换出来就会生成一个树形的结构。
    (其它字段没有全部列出)
    在这里插入图片描述

    JaxbXmlUtil工具类部分参考代码:

    public static final String DEFAULT_ENCODING = "UTF-8";
    
        /**
         * pojo转换成xml 默认编码UTF-8
         *
         * @param obj 待转化的对象
         * @return xml格式字符串
         * @throws Exception JAXBException
         */
        public static String convertToXml(Object obj) throws Exception {
            return convertToXml(obj, DEFAULT_ENCODING);
        }
    
        /**
         * pojo转换成xml
         *
         * @param obj 待转化的对象
         * @param encoding 编码
         * @return xml格式字符串
         * @throws Exception JAXBException
         */
        public static String convertToXml(Object obj, String encoding) throws Exception {
            String result = null;
    
            JAXBContext context = JAXBContext.newInstance(obj.getClass());
            Marshaller marshaller = context.createMarshaller();
            // 指定是否使用换行和缩排对已编组 XML 数据进行格式化的属性名称。
            marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
            marshaller.setProperty(Marshaller.JAXB_ENCODING, encoding);
    
            StringWriter writer = new StringWriter();
            marshaller.marshal(obj, writer);
            result = writer.toString();
    
            return result;
        }
        
        /**
         * xml转换成JavaBean
         *
         * @param xml xml格式字符串
         * @param t 待转化的对象
         * @return 转化后的对象
         * @throws Exception JAXBException
         */
        @SuppressWarnings("unchecked")
        public static <T> T convertToJavaBean(String xml, Class<T> t) throws Exception {
            T obj = null;
            JAXBContext context = JAXBContext.newInstance(t);
            Unmarshaller unmarshaller = context.createUnmarshaller();
            obj = (T) unmarshaller.unmarshal(new StringReader(xml));
            return obj;
        }
    

    实现方法三

    当然如果给你的需求方能直接给你提供WebService的WSDL文件,那简直不要太好了,那意味着你的开发将事倍功半。。

    WSDL可以反向生成WebService服务端

    具体参考这个大神的方法https://blog.csdn.net/jiandanfeng2/article/details/53439748
    在这里插入图片描述

    只要思想不滑坡,办法总比困难多。

    以上是我在开发WebService接口工程遇到的一些问题和解决办法, 具体情况还需要具体分析,有什么问题欢迎大家指出,有什么问题也可以一起探讨。

    展开全文
  • 那么,在只允许注册用户的WebService应用中,如何确保API访问和通信的安全性呢?本文所指的访问与通信安全性包括:访问安全性:当前访问者是注册合法用户通信安全性:客户端与服务器之间的消息即使被第三方窃取也不...
    (原创文章,转载请注明来源:http://blog.csdn.net/hulihui)
    

    众所周知,WebService访问API是公开的,知道其URL者均可以研究与调用。那么,在只允许注册用户的WebService应用中,如何确保API访问和通信的安全性呢?本文所指的访问与通信安全性包括:
    • 访问安全性:当前访问者是注册合法用户
    • 通信安全性:客户端与服务器之间的消息即使被第三方窃取也不能解密
    本文安全的基本思路是:
    • 注册用户登录时使用RSA加密
    • Web API调用参数使用DES加密(速度快)
    • Web API调用中包含一个身份票据Ticket
    • Web服务器保存当前Ticket的Session,包括:Ticket、DES加密矢量、注册用户基本信息

    1 WebService身份验证


    确保注册用户的访问安全,需要如下步骤:1)产生一个当前客户端机器票据(Ticket);2)请求服务器RSA公钥(RSAPublicKey);3)使用RSA加密登录口令及发布DES加密矢量(DESCipherVector)。

    1.1  产生客户端机器票据Ticket

    一般而言,可以由客户端机器根据自己的MAC、CPU序列号等唯一标识产生一个本机器的Ticket字符串票据,其目的是:唯一标识当前客户端,防止其它机器模仿本客户端行为。

    1.2  请求服务器公钥RSAPublicKey

    客户端携带票据Ticket向服务器请求RSA公钥RSAPublicKey。在服务器端,一般采取如下策略产生RSA加密钥匙:
    • Application_Start时产生一个1024或更长的RSA加密钥匙对。如果服务器需要长久运行,那么Application_Start产生的RSA可能被破解,替代方案是在当前Session_Start时产生RSA加密钥匙对
    • 保存当前票据对应的客户帐号对象,即:Session[Ticket] = AccountObject,在确认身份后在填写AccountObject具体内容:帐号、RSA加密钥匙对、DES加密矢量
    完成上述步骤后,服务器将RSAPublicKey传回给客户端。

    1.3  加密登录口令及DES加密矢量

    客户端获得RSAPulbicKey后,产生自己的DES加密矢量DESCipherVector(至少要8位及以上,该加密矢量用于以后的常规通信消息加密,因为其速度比RSA快)。接着,客户端使用RSAPublicKey加密登录帐号、口令及DESCipherVector,连同Ticket,发送到服务器并请求身份验证。登录API格式如下:

    public void Login(string Ticket, string cipherLongID, string cipherPassword);

    如果验证成功,服务器将当前帐号信息、RSA钥匙、DESCipherVector等保存到会话Session[Ticket]中。

    2 WebService通信安全性


    2.1  加密WebService API参数


    身份确认后,在客户端调用的WebService API中,必须包括参数Ticket,其它参数则均使用DESCipherVector加密。服务器端返回的消息也同样处理。例如,提交一个修改email的函数定义为:

    public void ModifyEmail(string Ticket, string cipherEmai);

    2.2  客户端解密消息

    客户端接收到服务器返回消息后,先做解密操作,如果成功则进入下步处理。否则抛出加密信息异常。

    2.3  服务器端解密消息

    服务器接收到客户提交的API请求后,首先验证Ticket的合法性,即查找Session中是否有该票据以验证客户身份。然后,解密调用参数。如果成功则进入下不操作,否则返回操作异常消息给客户端。

    需要指出,如果第三方截获全部会话消息,并保留其Ticket,此时服务器端仍然认可这个第三方消息。但是,第三方不能浏览,也不能修改调用API的参数内容,此时解密参数时将抛出异常。

    上面探讨了一个基于加密的WebService访问与通信安全方法,即使第三方获取消息,不能查看原始内容,也不能修改内容,保证了WebService API的安全性。

    本方案还是存在一个明显的缺陷,即:如果直接修改调用参数内容,在客户端或服务器端解密时不抛出异常,如何处理?如何保证解密时一定抛出异常?这个待以后研究后回答。
    展开全文
  • 思路 1 执行服务器执行查询成功 2 执行服务器在本地生成序列化的xml文件 3 执行服务器发送线程调用远程WebService将本地结果文件读取为字节流发送到服务器;如果成功,则删除本地结果文件;否则,...

    背景

             最近的一个项目,涉及将客户端执行后的结果回传给服务端,便于对客户端执行的信息进行统一的管理。

    思路

    1          执行服务器执行查询成功

    2          执行服务器在本地生成序列化的xml文件

    3          执行服务器发送线程调用远程WebService将本地结果文件读取为字节流发送到服务器;如果成功,则删除本地结果文件;否则,继续回发,直到成功为止--消息队列本质。

    实现

    1 执行服务器执行查询成功

    2 执行服务器在本地生成序列化的xml文件

    //把任务结果信息序列化写入文件

    this.WriteResultToFile(pmqPath, info, result);

     

      

    3       执行服务器发送线程调用远程WebService将本地结果文件读取为字节流发送到服务器

    1          从本地文件读取字节流

     

                while (true)

                {

                    try

                    {

                        pmqPath = Common.GetAppSettings(PMQPathKey);

     

                        if (!Directory.Exists(pmqPath))

                        {

                            Directory.CreateDirectory(pmqPath);

                        }

     

                        pmqDirectInfo = new DirectoryInfo(pmqPath);

     

                        XmlSerializer xs = new XmlSerializer(typeof(TaskExecuteQueueExtendInfo));

     

                        files = pmqDirectInfo.GetFiles("*" + PMQExtendFileName);

     

                        Array.Sort<FileInfo>(files, delegate(FileInfo filel, FileInfo filer)

                        {

                            return int.Parse(Path.GetFileNameWithoutExtension(filel.Name)).CompareTo(int.Parse(Path.GetFileNameWithoutExtension(filer.Name)));

                        });

     

                        planTaskExcuteQueue = new PlanTaskExecuteQueue();

     

                        planTaskExcuteQueue.Timeout = Convert.ToInt32(Common.GetAppSettings(WebServiceTimeOutKey));

     

                        foreach (FileInfo file in files)

                        {

                            //得到任务队列扩展信息

                            using (Stream stream = new FileStream(file.FullName, FileMode.Open, FileAccess.Read, FileShare.ReadWrite))

                            {

                                taskExecuteQueueExtendInfo = (TaskExecuteQueueExtendInfo)xs.Deserialize(stream);

                            }

     

                            if (taskExecuteQueueExtendInfo == null)

                            {

                                continue;

                            }

     

                            // 回发执行结果

                            try

                            {

                                booleanResult = planTaskExcuteQueue.ProcessTaskExecutedResult(taskExecuteQueueExtendInfo);

                            }

                            catch (Exception ex)

                            {

                                MessageQueue.Instance.InsertMessage(ex.Message);

                            }

     

                            // 如果成功则删除消息文件

                            if (booleanResult != null && booleanResult.IsSuccess)

                            {

                                file.Delete();

                            }

                        }

                    }

                    catch (Exception ex)

                    {

                        MessageQueue.Instance.InsertMessage(ex.Message);

                    }

     

                    Thread.Sleep(Convert.ToInt32(Common.GetAppSettings(PMQThreadSleepTimeKey)));

                }

     2 通过WebService传到服务端(回发执行提示信息与结果)

    提示信息(后面不写:在服务端完成了记日志的功能)        [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://tempuri.org/ProcessTaskExecutedResult", RequestNamespace="http://tempuri.org/", ResponseNamespace="http://tempuri.org/", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)]

            public BooleanResult ProcessTaskExecutedResult(TaskExecuteQueueExtendInfo taskExecuteQueueInfo) {

                object[] results = this.Invoke("ProcessTaskExecutedResult", new object[] {

                            taskExecuteQueueInfo});

                return ((BooleanResult)(results[0]));

            }

     回发结果文件

          /// <summary>

            /// 处理任务生成的文件

            /// </summary>

            /// <param name="fileParameter">生成文件参数</param>

            /// <param name="fileContent">文件内容</param>

            /// <returns>是否成功</returns>

            [WebMethod(Description = "处理任务生成的文件")]

            public BooleanResult ProcessTaskGeneratoredFile(GeneratorTaskReportInfo generatorReportInfo, byte[] fileContent)

            {

                PlanDispatchService dispatchService = new PlanDispatchService();

     

                return dispatchService.ProcessTaskGeneratoredFile(generatorReportInfo, fileContent);

            }

     扩展:将信息写进数据库

                 taskQueueReportInfo = new TaskQueueReportInfo();

                            taskQueueReportInfo.FileName = generatorReportInfo.FileName;

                            taskQueueReportInfo.SendUserAccount = sendAccount;

                            taskQueueReportInfo.TaskPlanQueueCode = generatorReportInfo.TaskPlanQueueCode;

                            taskQueueReportInfo.FileContent = fileContent;

     

                            taskQueueReport.CreateTaskQueueReport(taskQueueReportInfo);

                        }

     

    4 统一后台下载(扩展):

    if (e.CommandName == "DownLoad")

                {

                    int code = Convert.ToInt32(e.CommandArgument);

     

                    GenericResult<TaskQueueReportInfo> reportResult = planTaskService.GetReportByCode(code);

     

                    if (reportResult.IsSuccess)

                    {

                        this.GenerateCSV(reportResult.Value.FileName, reportResult.Value.FileContent);

                    }

                    else

                    {

                        JsHelper.JsAlert(this, reportResult.Message, false);

                        return;

                    }

                }

     

       private void GenerateCSV(string fileName, byte[] fileContent)

            {

                if (string.IsNullOrEmpty(fileName) || fileContent == null)

                {

                    return;

                }

     

                string extendName = Path.GetExtension(fileName);

     

                HttpContext.Current.Response.Clear();

                HttpContext.Current.Response.Charset = "utf-8";

                HttpContext.Current.Response.ContentType = extendName;

                HttpContext.Current.Response.AddHeader("Content-Disposition", "attachment; filename=" + HttpUtility.UrlEncode(fileName, Encoding.UTF8));

                HttpContext.Current.Response.BinaryWrite(fileContent);

                HttpContext.Current.Response.End();

     

            }

    展开全文
  • Webservice是跨平台,跨语言的远程调用技术。 它的通信机制实质是xml数据交换 它采用了soap协议(简单对象协议)进行通信
  • Hessian:hessian是一个轻量级的remoting onhttp工具,使用简单的方法提供了RMI的功能,相比WebService,Hessian更简单、快捷。采用的是二进制RPC协议,因为采用了二进制协议,所以它很适合于发送二进制数据,Hessian...
  • webservice、WSDL简介

    2019-02-21 17:38:00
    通信机制的本质是xml数据交换 采用soap协议进行通信 而WSDL 指网络服务描述语言 (Web Services Description Language)。 WSDL 是一种使用XML编写的文档。这种文档可描述某个 Web service。它可规定服务...
  • webservice部分

    2014-02-17 09:59:22
    JAXM(Java API for XML Messaging) 是为SOAP通信提供访问方法和传输机制的API。 WSDL是一种 XML 格式,用于将网络服务描述为一组端点,这些端点对包含面向文档信息或面向 过程信息的消息进行操作。这种格式首先对...
  • webservice解析demo

    2016-09-12 22:44:42
    多个系统数据交换: 跨平台语言的相互通信; 如:java 的客户端 和dotnet的服务器端的接口调用: 得到接口和方法 : 基于标准的协议,可编程语言; 服务器开发 api; 特点: 自包含:只要客户端支持http和xml...
  • PHP webservice

    2009-05-18 23:42:00
    Web Service为了异构系统的通信而产生的,它基本的思想就是使用基于XML的HTTP的远程调用提供一种标准的机制,而省去建立一种新协议的需求。目前进行Web Service通信有两种协议标准,一种是XML-RPC,另外一种是SOAP。...
  • WCF实例 webservice

    2009-08-26 21:30:30
    由于WCF最基本的通信机制是SOAP,这就保证了系统之间的互操作性,即使是运行不同的上下文中。这种通信可以是基于.Net到.Net间的通信。 可以跨进程、跨机器甚至于跨平台的通信,只要支持标准的Web Service,例如...
  • 什么是webservice

    2019-09-16 10:58:44
    Web Services 框架的核心技术包括SOAP ,WSDL 和UDDI ,它们都是以...SOAP 是Web services 的通信协议。 SOAP是一种简单的、轻量级的基于XML 的机制,用于在网络应用程序之间进行结构化数据交换。SOAP包括三部分...
  • Hessian与WebService区别

    2019-01-22 14:16:10
    Hessian:hessian是一个轻量级的remoting onhttp工具,使用简单的方法提供了RMI的功能,相比WebService,Hessian更简单、快捷。 采用的是二进制RPC协议,因为采用了二进制协议,所以它很适合于发送二进制数据,...
  • WebSocket-WebService

    2018-11-23 10:13:42
    当连接建立时,服务端会创建一个Socket对象,客户端和服务端可以通过对Socket的写入和读取来进行通信 并且java.net.ServerSocket类为服务器程序提供了一种来监听客户端,并与他们建立连接的机制 步骤: 服务器实例...
  • 实现了系统与系统进程间的远程通信.java领域有很多可实现远程通讯的技术,如:RMI(Socket + 序列化)、Binary-RPC(Http+二进制, 代表Hessian)、XML-RPC(Http+XML, 代表Burlap, WebService用的SOAP)、JMS(使用消息机制...
  • 2015-07-31 java错题

    2015-07-31 10:30:48
    5 下面有关webservice的描述,错误的...Webservice通信机制实质就是json数据交换 Webservice采用了soap协议(简单对象协议)进行通信 WSDL是用于描述 Web Services 以及如何对它们进行访问 解析:其他几项都对,Web
  • Hessian:hessian是一个轻量级的remoting onhttp工具,使用简单的方法提供了RMI的功能,相比WebService,Hessian更简单、快捷。采用的是二进制RPC协议,因为采用了二进制协议,所以它很适合于发送二进制数据,Hessian...
  • 异步调用WEBSERVICE

    千次阅读 2008-04-09 15:36:00
    异步调用WEBSERVICEWeb 服务描述语言工具 (Wsdl.exe) 生成客户端代理类来访问指定的 Web 服务时,会为该代理类提供与每个 Web 服务方法进行异步通信的两种机制。第一种机制是 Begin/End 模式。第二种机制是在 .NET ...
  • php的webservice

    2009-07-05 12:36:00
    Web Service为了异构系统的通信而产生的,它基本的思想就是使用基于XML的HTTP的远程调用提供一种标准的机制,而省去建立一种新协议的需求。目前进行Web Service通信有两种协议标准,一种是XML-RPC,另外一种是SOAP。...
  • soa和webservice的区别

    2012-03-06 00:36:22
    通信中间件的出现,封装了低级通信机制的技术,对开发人员隐藏了通信技术库的细节。 按照时间出现的先后顺序分别出现了以下三种通信中间件。 1、 RPC(远程过程调用) RPC将对远程函数的调用就如同对本地函数的...
  • webservice wsdl和soap

    2012-04-05 22:04:06
    Web Services 框架的核心技术包括SOAP ,WSDL 和UDDI ,它们都是以标准的XML 文档的形式表的。SOAP 是Web services 的通信协议。SOAP是一种简单的、轻量级的基于XML 的机制,用于在网络应用程序之间进行
  • Android 访问WebService的方法

    千次阅读 2015-10-24 14:53:00
    Web Service是实现异构程序之间方法调用的一种机制。Web Service通过一种XML格式的特殊文件来描述方法、参数、调用和返回值,这种格式的XML文件称为WSDL(Web Service Des cription Language),即Web服务器描述语言...
  • SOAP 提供了一种标准的方法,使得运行在不同的操作系统并使用不同的技术和编程语言的应用程序可以互相进行通信。 SOAP封装(envelop):定义了一个框架,描述消息中的内容是什么,是谁发送的,谁应当接受并处理它...

空空如也

空空如也

1 2 3 4 5 ... 10
收藏数 198
精华内容 79
关键字:

webservice通信机制