WebService 接口开发与访问

@WebService(name = "fruit")
@Controller
public class WsWebService extends SpringBeanAutowiringSupport{

    @SuppressWarnings("static-access")
    @WebMethod
    public Object getListByType(@WebParam(name = "userid",@WebParam(name = "type") String type) String userid, 
            ) throws Exception {
        Map<String, Object> mapReturn = new HashMap<String, Object>();
        mapReturn.put("apple ", 108);
        mapReturn.put("pear ", 120);
        mapReturn.put("apricot ", 128);
        mapReturn.put("peach ", 130);
      
        return XmlHelper.map2Xmlstring(mapReturn);//返回xml格式数据
    }

 
     public static void main(String[] args)  {
     
        try {
            //请求webservice接口
            URL url = new URL("http://127.0.0.1:8880/project/services/fruit?wsdl");  //webservice 接口地址
            Service service = new Service();
            Call call = (Call)service.createCall();
            call.setTargetEndpointAddress(url);
            call.setOperationName("getListByType");  //方法名,和请求接口方法名称一致
            call.setTimeout(100000);
            //参数添加参数,参数顺序,类型,必须和调用接口的服务端同步。不然会报unexpected element (uri:"",                                         local:"appmark"). Expected elements are <{}jsonStr> 
            call.addParameter("userid",XMLType.XSD_STRING, ParameterMode.IN);
            call.addParameter("type",XMLType.XSD_STRING, ParameterMode.IN);
                
            call.setReturnType(XMLType.XSD_STRING);
            call.setUseSOAPAction(true);
            //这是的顺序和参数名称一一对应。
            Object obj [] =new Object[] {"userid","type"};//请求参数
            String ret = null;
            ret = (String) call.invoke(obj);
            logger.info("getApasInfoCount Count===="+ret);                    
        } catch (Exception e) {
            e.printStackTrace();
        } 

    }

}

PS:

一、WebService到底是什么?

先来看下标准的定义:Web Service也叫XML Web Service WebService是一种可以接收从Internet或者Intranet上的其它系统中传递过来的请求,轻量级的独立的通讯技术。是:通过SOAP在Web上提供的软件服务,使用WSDL文件进行说明,并通过UDDI进行注册。

其实,一言以蔽之:WebService是一种跨编程语言和跨操作系统平台的远程调用技术。

还可以从多个角度来理解WebService,从表面看,WebService就是一个应用程序向外界暴露出一个能通过Web进行调用的API,也就是说能用编程的方法通过Web来调用这个应用程序。我们把调用这个WebService的应用程序叫做客户端,而把提供这个WebService的应用程序叫做服务端。从深层次看,WebService是建立可互操作的分布式应用程序的新平台,是一个平台,是一套标准。它定义了应用程序如何在Web上实现互操作性,你可以用任何你喜欢的语言,在任何你喜欢的平台上写Web service ,只要我们可以通过Web service标准对这些服务进行查询和访问。

二、WebService平台技术

SOAP、WSDL、UDDI(UniversalDescriptionDiscovery andIntegration)三者构成了WebService的三要素。下面,详细阐述这三大技术:

  • SOAP

    扫描二维码关注公众号,回复: 4649255 查看本文章

    WebService通过HTTP协议发送请求和接收结果时,发送的请求内容和结果内容都采用XML格式封装,并增加了一些特定的HTTP消息头,以说明HTTP消息的内容格式,这些特定的HTTP消息头和XML内容格式就是SOAP协议。SOAP提供了标准的RPC方法来调用Web Service。 
    SOAP协议组成: 
    SOAP协议 = HTTP协议 + XML数据格式 
    SOAP协议定义了SOAP消息的格式,SOAP协议是基于HTTP协议的,SOAP也是基于XML和XSD的,XML是SOAP的数据编码方式。打个比喻:HTTP就是普通公路,XML就是中间的绿色隔离带和两边的防护栏,SOAP就是普通公路经过加隔离带和防护栏改造过的高速公路。

  • WSDL

    好比我们去商店买东西,首先要知道商店里有什么东西可买,然后再来购买,商家的做法就是张贴广告海报。 WebService也一样,WebService客户端要调用一个WebService服务,首先要有知道这个服务的地址在哪,以及这个服务里有什么方法可以调用,所以,WebService务器端首先要通过一个WSDL文件来说明自己家里有啥服务可以对外调用,服务是什么(服务中有哪些方法,方法接受的参数是什么,返回值是什么),服务的网络地址用哪个url地址表示,服务通过什么方式来调用。 
    WSDL(Web Services Description Language)就是这样一个基于XML的语言,用于描述Web Service及其函数、参数和返回值。它是WebService客户端和服务器端都能理解的标准格式。因为是基于XML的,所以WSDL既是机器可阅读的,又是人可阅读的,这将是一个很大的好处。一些最新的开发工具既能根据你的Web service生成WSDL文档,又能导入WSDL文档,生成调用相应WebService的代理类代码。

  • UDDI

    UDDI (Universal Description, Discovery, and Integration) 是一个主要针对Web服务供应商和使用者的新项目。在用户能够调用Web服务之前,必须确定这个服务内包含哪些商务方法,找到被调用的接口定义,还要在服务端来编制软件,UDDI是一种根据描述文档来引导系统查找相应服务的机制。UDDI利用SOAP消息机制(标准的XML/HTTP)来发布,编辑,浏览以及查找注册信息。它采用XML格式来封装各种不同类型的数据,并且发送到注册中心或者由注册中心来返回需要的数据。

猜你喜欢

转载自blog.csdn.net/qq_34664202/article/details/81512568