精华内容
下载资源
问答
  • WebService的实现方法调用方法
  • 1. Java调用webservice接口方法webservice的 发布一般都是使用WSDL(web service descriptive language)文件的样式来发布的,在WSDL文件里面,包含这个webservice暴露在外面可供使用的接口。我们也可以在以下网站找到...

    1. Java调用webservice接口方法

    webservice的 发布一般都是使用WSDL(web service descriptive language)文件的样式来发布的,在WSDL文件里面,包含这个webservice暴露在外面可供使用的接口。

    我们也可以在以下网站找到许多 webservice provider列表, 你可以使用下面的URL来测试你的webservice程序。

    http://www.webservicex.net/ws/default.aspx

    这上面列出了70多个包括很多方面的free webservice provider,utilities->global weather就可以获取全球的天气预报。

    下面我们来看Java如何通过WSDL文件来调用这些web service(以 COPS WebSSO为例)

    1.1 [Apache提供]直接通过AXIS调用远程的web service

    我认为这种调用方式适合比较那种返回比较简单的数据的service, 比如,天气预报,这些内容肯定可以通过一个很简单的xml来返回。还有就是WebSSO,返回的就是一个字符串。

    这种调用方式的好处就是简单(开发简单,调用简单,只要service提供方不改动对外的方法接口,客户端都无需有代码带动),无需对web service有太深了解,只要按照套路去掉用就可以了。

    直接调用模式如下:

    <>

    packagews.client;

    importorg.apache.axis.client.Call;

    importorg.apache.axis.client.Service;

    public classLogonClientWithURL {

    public static voidmain(String args[])throwsException {

    try{

    String urlname = "http://192.168.194.23:9080/Logon/services/Logon?wsdl" ;

    urlname = "http://192.168.194.23:9080/Logon/services/Logon";

    Service s =new  Service();

    Call call = (Call) s.createCall();

    call.setTimeout(newInteger(5000));

    call.setOperation( "getSecurityToken" );

    call.setTargetEndpointAddress(urlname);

    Object[] fn01 = { "john" , "john" ,null,null};

    String val = (String)call.invoke(fn01);

    System.out.println( "getSecurityToken(correct):"  + val);

    Object[] fn02 = { "john" , "john2" ,null,null};

    String va2 = (String)call.invoke(fn02);

    System.out.println( "getSecurityToken(wrong):"  + va2);

    }catch(Exception e) {

    //java.io.InterruptedIOException: Read timed out

    System.out.println(e.getMessage());

    }

    }

    }

    1.2 [Apache提供]使用WSDL2Java把WSDL文件转成本地类,然后像本地类一样使用。

    这种方式应该可以调用所有的webService。

    同时这个调用方式适合那种业务比较复杂的Service (特别是企业应用, 不是外部所有人都能无限制访问那种Service),比如,这个Service返回的xml内容比较复杂,同时多个客户端系统都需要访问这个Service,在这种情况,service提供方可能会考虑返回一个java类。毕竟,每个客户端都要解析xml也够麻烦的,还不如让service提供方返回一个类。

    调用模式如下:

    1)使用WSDL2Java把WSDL文件转成本地类。 我这里写了bat文件:

    <>

    set Axis_Lib=.\lib

    set Java_Cmd=D:\Dev\JDK\jdk1.4.2_12\bin\java -Djava.ext.dirs=%Axis_Lib%

    set Output_Path=.\src

    set Package=com.ubs.ws

    %Java_Cmd% org.apache.axis.wsdl.WSDL2Java -o%Output_Path% http:\\192.168.194.23:9080\Logon\services\Logon\wsdl\Logon.wsdl

    Pause

    运行直接生成以下java类

    Logon.java

    LogonService.java

    LogonServiceLocator.java

    LogonSoapBindingStub.java

    2) <>

    packagetest.cis.client;

    importtest.cis.*;

    public classLogonClientWithStub {

    public static voidmain(String[] args) {

    try{

    Logon locator =newLogonServiceLocator().getLogon();

    String result = locator.getSecurityToken("john" , "john" ,null,null);

    System.out.println("getSecurityToken(correct): " + result);

    result = locator.getSecurityToken("john" , "john2" ,null,null);

    System.out.println("getSecurityToken(wrong): " + result);

    }catch(Exception e) {

    //TODOAuto-generated catch block

    e.printStackTrace();

    }

    }

    }

    1.3 [Apache提供]直接SOAP调用远程的webservice

    apache的soap项目,不过如今已经被axis取代了,后者重新进行了架构设计,功能更齐全。

    前者已停止开发。所以建议用axis。也就是1.1 & 1.3

    1.4 [XFire提供] 使用XFire调用WebService

    有兴趣的可以下载XFire的jar来学习一下。

    展开全文
  • C# 调用WebService的方法

    2020-12-17 04:19:34
    在日常工作中,如果涉及到与第三方进行接口对接,有的会使用WebService的方式,这篇文章主要讲解在.NET Framework中如何调用WebService。首先我们创建一个WebService,里面有两个方法:一个无参的方法,一个有参...
  • webservice的远程调用方法

    千次阅读 2016-06-22 10:23:32
    /** * 方法一: * 应用rpc方式调用 这种方式就等于远程调用, * 即通过url定位告诉远程服务器,告知方法名称,参数等, 调用远程服务,得到结果。 * 使用 org.apache.axis2.rpc.client....

    本示例使用的是axis2


    1. /** 
    2.    * 方法一: 
    3.    * 应用rpc的方式调用 这种方式就等于远程调用, 
    4.    * 即通过url定位告诉远程服务器,告知方法名称,参数等, 调用远程服务,得到结果。 
    5.    * 使用 org.apache.axis2.rpc.client.RPCServiceClient类调用WebService 
    6.    * 
    7.     【注】: 
    8.      
    9.         如果被调用的WebService方法有返回值 应使用 invokeBlocking 方法 该方法有三个参数 
    10.           第一个参数的类型是QName对象,表示要调用的方法名; 
    11.           第二个参数表示要调用的WebService方法的参数值,参数类型为Object[]; 
    12.             当方法没有参数时,invokeBlocking方法的第二个参数值不能是null,而要使用new Object[]{}。 
    13.           第三个参数表示WebService方法的 返回值类型的Class对象,参数类型为Class[]。 
    14.          
    15.          
    16.         如果被调用的WebService方法没有返回值 应使用 invokeRobust 方法 
    17.           该方法只有两个参数,它们的含义与invokeBlocking方法的前两个参数的含义相同。 
    18.  
    19.         在创建QName对象时,QName类的构造方法的第一个参数表示WSDL文件的命名空间名, 
    20.         也就是 <wsdl:definitions>元素的targetNamespace属性值。 
    21.    * 
    22.    */ 
    try{ RPCServiceClient client = new RPCServiceClient(); Options options = client.getOptions(); String url = "http://172.16.8.168:8061/itp?wsdl"; EndpointReference end = new EndpointReference(url); options.setTo(end); //确定调用方法 // options.setAction("urn:upLoadFile"); String filename="D:\\ftp\\ftpTest\\123.txt"; File file=new File(filename); TestService ts= new TestService(); String fileString=ts.readLocalFile(file); Object[] obj = new Object[]{file.getName(),fileString}; Class<?>[] classes = new Class[] { boolean.class }; QName qname = new QName("http://webservice.stp.hzih.com/", "upLoadFile"); // RPCServiceClient类的invokeBlocking方法调用了WebService中的方法。 invokeBlocking方法有三个参数,其中第一个参数的类型是QName对象, 表示要调用的方法名;第二个参数表示要调用的WebService方法的参数值, 参数类型为Object[];第三个参数表示WebService方法的返回值类型的Class对象, 参数类型为Class[]。当方法没有参数时,invokeBlocking方法的第二个参数值不能是null, 而要使用new Object[]{}。   Object[] response = client.invokeBlocking(qname, obj,classes); boolean result=(boolean)response[0]; System.out.println(result); }catch(AxisFault e){ e.printStackTrace(); }

    展开全文
  • 【WebService开发】其他调用webservice的方法
    <p><strong>1.ajax<span style="font-family:宋体;">调用</span><span style="font-family:Calibri;">webservice</span></strong></p>
    
    <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
      <head>
        <title>ajax请求webservice</title>
        <script type="text/javascript">
    	window.onload = function() {
    		document.getElementById("btn1").onclick = function() {
    			var xmlHttp = GetXmlHttpObject();
    			if (xmlHttp == null) {
    				alert("您的浏览器不支持AJAX!");
    				return;
    			}
    			xmlHttp.onreadystatechange=function(){
    				if (xmlHttp.readyState==4 && xmlHttp.status==200){
    					var dom = xmlHttp.responseXML;
    					var returnEle = dom.getElementsByTagName("return")[0];
    					var nameVal = returnEle.firstChild.data;
    					alert(nameVal);
    				}
    			}
    			xmlHttp.open("POST","http://192.168.0.103:8989/day01_ws/hellows");
    			var name = document.getElementById("name").value;
    			var data = '<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"><soap:Body><ns2:sayHello xmlns:ns2="http://ws.xdy.com/"><arg0>'+name+'</arg0></ns2:sayHello></soap:Body></soap:Envelope>';
    	xmlHttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
    			xmlHttp.send(data);
    			
    		}
    		function GetXmlHttpObject() {
    			var xmlHttp = null;
    			try {
    				// Firefox, Opera 8.0+, Safari
    				xmlHttp = new XMLHttpRequest();
    			} catch (e) {
    				// Internet Explorer
    				try {
    					xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
    				} catch (e) {
    					xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
    				}
    			}
    			return xmlHttp;
    		}
    	}
    </script>
      </head>
      <body>
        	姓名:<input type="text" id="name">
        	<button id="btn1">ajax请求webservice</button>
      </body>
    </html>

    2.jquery调用webservice

    $(function(){
    			$.post(
    					"http://192.168.0.103:8989/day01_ws/hellows",
    					'<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">'
    					+'<soap:Body><ns2:sayHello xmlns:ns2="http://ws.xdy.com/"><arg0>xiongdy</arg0></ns2:sayHello></soap:Body></soap:Envelope>',
    					function(msg){
    						alert($(msg).find("return").text());
    					},
    					"xml"
    			);
    	    });

    3.HttpURLConnection调用WebService

    上面两种请求都存在跨域的问题。如何解决ajax跨域请求webservice的问题?

    在客户端应用中使用java编码去请求webservice,在页面中去请求自己的后台。本示例在servlet里请求webservice,页面提交到servlet

    Servlet代码:

    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    		String name = request.getParameter("name");
    		System.out.println("doPost "+name);
    		
    		String data = "<soap:Envelope xmlns:soap='http://schemas.xmlsoap.org/soap/envelope/'><soap:Body><ns2:sayHello xmlns:ns2='http://ws.xdy.com/'><arg0>"+name+"</arg0></ns2:sayHello></soap:Body></soap:Envelope>";
    		URL url = new URL("http://192.168.0.103:8989/day01_ws/hellows");
    		
    		HttpURLConnection connection = (HttpURLConnection) url.openConnection();
    		
    		connection.setRequestMethod("POST");
    		connection.setDoOutput(true);
    		connection.setDoInput(true);
    		connection.setRequestProperty("Content-Type", "text/xml;charset=utf-8");
    		
    		OutputStream os = connection.getOutputStream();
    		os.write(data.getBytes("utf-8"));
    		
    		int responseCode = connection.getResponseCode();
    		if(responseCode==200) {
    			InputStream is = connection.getInputStream();//String xml
    			System.out.println("return "+is.available());
    			
    			response.setContentType("text/xml;charset=utf-8");
    			ServletOutputStream outputStream = response.getOutputStream();
    			
    			byte[] buffer = new byte[1024];
    			int len = 0;
    			while((len=is.read(buffer))>0) {
    				outputStream.write(buffer, 0, len);
    			}
    			outputStream.flush();
    		}
    	}

    页面代码:

    <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
      <head>
        <title>ajax请求webservice</title>
        <script type="text/javascript" src="jquery-1.4.3.js"></script>
        <script type="text/javascript">
    	    $(function(){
    		    $("#btn").click(function(){
    				var name = document.getElementById("name").value;
    				$.post(
    					"HttpURLConnectionServlet",
    					"name="+name,
    					function(msg) {
    						var $Result = $(msg);
    						var value = $Result.find("return").text();
    						alert(value);
    					},
    					"xml"
    				);
    			});
    	    });
    	</script>
      </head>
      
      <body>
      	用户名:
    	<input id="name" name="username" value="" />
    	<br>
      	<button id="btn">HttpURLConnection请求webservice</button>
      </body>
    </html>

    展开全文
  • 在eclipse中生成webservice客户端以后,可以按照以下方式进行调用接口。生成客户端有一个接口继承Service类:interface XXXService extends javax.xml.rpc.Service还有一个该接口实现类: XXXServiceLocator ...
    在eclipse中生成webservice客户端以后,可以按照以下方式进行调用接口。

    生成的客户端有一个接口继承Service类:interface XXXService extends javax.xml.rpc.Service
    还有一个该接口实现类: XXXServiceLocator implements XXXService
    还有一个接口继承Remote类:interface XXXPortType extends java.rmi.Remote
    还有一个实现这个接口XXXSoapBindingStub implements XXXPortType

    你拿着这四个类就可以调用
    Java code
    ?
    1
    2
    3
              XXXService service = new XXXServiceLocator();   
            XXXSoapBindingStub client = (Stub) service.getXXX();           
          System.out.println(client.MOTHOD(PARAM1...));
    展开全文
  • webservice的调用方法

    2019-10-02 05:50:48
    一、WebService在cs后台程序中的调用 A、通过命名空间和类名直接调用 示例: 1 WebService ws = new WebService(); 2 3 string s = ws.HelloWorld(); B、通过添加WEB引用方式调用,首先添加WEB引用,...
  • webservice的 发布一般都是运用WSDL(web service descriptive language)文件的款式来发布的,在WSDL文件里边,包含这个webservice暴露在外面可供运用的接口。今日查找到了非常好的 webservice provider列表...
  • 本文实例讲述了Java调用WebService接口的方法。分享给大家供大家参考。具体如下:这里讲述有参方法Add,代码如下:复制代码 代码如下:public static void addTest() {try ...{Integer i = 1;Integer j = 2;//...
  • webService的调用方法

    2016-05-12 10:12:26
    1、webService一般是复制到本地调用,还是在互联网上调用 2、如果在本地调用的话,用c调用java写服务,没有虚拟机,这个服务该怎么运行 3、如果在互联网上调用,那么服务器是用本地,还是互联网上
  • 但是有的webservice接口非常的函数,生成的java类非常多,有没有一种非常简化的方法。 axis2有不生成类直接调用的方法,但是QName不容易找,每次查N久不到。有的反馈,使用CXF调用一样方便,但CXF还要使用maven...
  • 主要介绍了Android开发调用WebService的方法,结合实例形式较为详细的分析了Android调用WebService的原理、实现方法与相关操作注意事项,需要的朋友可以参考下
  • WebService接口的调用方法

    千次阅读 2018-12-24 15:13:56
    这里先给出一个webservice的免费接口。用于查询ip地址所在地 http://www.webxml.com.cn/WebServices/IpAddressSearchWebService.asmx?wsdl 我们先通过浏览器访问。找到头部的一个链接。 targetNamespace=&...
  • 使用 webservice 实现远程调用 RPC 调用 2WebService 介绍 Web service 是一个平台独立,低耦合 web 应用程序用于开发分 布式互操作应用 程序。Web Service 技术, 能使得运行在不同机器上不同应用无须...
  • 我在用Java调用WebService服务时,出现了这个错误Exception in thread "main" java.lang.NoSuchMethodError: org.apache.commons.httpclient.MultiThreadedHttpConnectionManager.setParams(Lorg/apache/commons/...
  • 一、利用jdk web服务api实现,这里使用基于 SOAP message Web 服务1....importjavax.jws.WebService;importjavax.jws.WebMethod;importjavax.xml.ws.Endpoint;@WebServicepublic classHello ...
  •  WebService采用HTTP协议传输数据,采用XML格式封装数据(即XML中说明调用远程服务对象哪个方法,传递参数是什么,以及服务对象返回结果是什么)。XML是WebService平台中表示数据格式。除了易于建立和易于...
  • 把自己对WebService的了解拿出来跟大家分享一下,本文介绍了几种调用WebService的方法,希望能对你有帮助。  在JavaScript中调用WebService   < script language="javascript"> fu...
  • 【1】直接添加服务引用,然后调用相关方法。public class WebServiceDemo : System.Web.Services.WebService{[WebMethod]public string HelloWorld(){return "Hello World";}[WebMethod]public string Sum(string ...
  • 二、使用xfire,我这里使用是myeclipse集成xfire进行测试利用xfire开发WebService,可以有三种方法:1一种是从javabean 中生成;2 一种是从wsdl文件中生成;3 还有一种是自己建立webservice步骤如下:用...
  • webservice 远程方法调用核心步骤

    千次阅读 2011-12-10 17:01:53
    2.导入xfirejar包:工程----->右键------>myEclipse----->add xFire----->next------>加入核心包core 3.在WebServices--->services.xml中配置   leiweiService www.yinhe.edu.com/leiweiService
  • Java调用webservice的方法

    千次阅读 2014-05-22 10:54:26
    1. Java调用webservice接口方法 webservice的 发布一般都是使用WSDL(web service descriptive language)文件的样式来发布的,在WSDL文件里面,包含这个webservice暴露在外面可供使用的接口。 我们也可以在...
  • 主要介绍了Asp.NET Core 如何调用WebService的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
  • 这次给大家带来js跨域调用WebService的使用方法,js跨域调用WebService的注意事项有哪些,下面就是实战案例,一起来看一下。步骤1. 在web.config中的system.web节点里加入步骤2.webservice代码using System;using ...
  • 这里写自定义目录标题webService接口调用的通用方法具体方法如下如何插入一段漂亮代码片生成一个适合你列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可...
  • 之前调用 WebService 都是直接添加服务引用,然后调用 WebService 方法的,最近发现还可以使用 Http 请求调用 WebService。这里还想说一句,还是 web api 的调用简单。 WebService 服务端代码: public class ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 6,582
精华内容 2,632
关键字:

webservice的方法调用