当前位置:首页>开发>正文

怎么访问webservice接口的方法

2024-01-10 12:46:38 互联网 未知 开发

怎么访问webservice接口的方法?

怎么访问webservice接口的方法

java调用WebService可以直接使用Apache提供的axis.jar自己编写代码,或者利用Eclipse自动生成WebService Client代码,利用其中的Proxy类进行调用。理论上是一样的,只不过用Eclipse自动生成代码省事些。1、编写代码方式:package com.yudun.testimport java.rmi.RemoteExceptionimport org.apache.axis.client.Callimport org.apache.axis.client.Serviceimport org.apache.axis.message.PrefixedQNameimport org.apache.axis.message.SOAPHeaderElementimport com.cezanne.golden.user.Exceptionimport com.cezanne.golden.user.UserManagerServiceProxyimport javax.xml.namespace.QNameimport java.net.MalformedURLExceptionimport javax.xml.rpc.ServiceExceptionimport javax.xml.soap.Nameimport javax.xml.soap.SOAPExceptionpublic class testWebService {public static String getResult() throws ServiceException, MalformedURLException, RemoteException, SOAPException { //标识Web Service的具体路径 String endpoint = "WebService服务地址" // 创建 Service实例 Service service = new Service() // 通过Service实例创建Call的实例 Call call = (Call) service.createCall() //将Web Service的服务路径加入到call实例之中. call.setTargetEndpointAddress( new java.net.URL(endpoint) )//为Call设置服务的位置 // 由于需要认证,故需要设置调用的SOAP头信息。 Name headerName = new PrefixedQName( new QName("发布的wsdl里的targetNamespace里的url", "string_itemName") ) org.apache.axis.message.SOAPHeaderElement header = new SOAPHeaderElement(headerName) header.addTextNode( "blablabla" ) call.addHeader(header) // SOAPHeaderElement soapHeaderElement = new SOAPHeaderElement("发布的wsdl里的targetNamespace里的url", "SoapHeader") // soapHeaderElement.setNamespaceURI("发布的wsdl里的targetNamespace里的url") // try // { // soapHeaderElement.addChildElement("string_itemName").setValue("blablabla") // } // catch (SOAPException e) // { // e.printStackTrace() // } // call.addHeader(soapHeaderElement) //调用Web Service的方法 org.apache.axis.description.OperationDesc oper org.apache.axis.description.ParameterDesc param oper = new org.apache.axis.description.OperationDesc() oper.setName("opName") param = new org.apache.axis.description.ParameterDesc(new javax.xml.namespace.QName("", "arg0"), org.apache.axis.description.ParameterDesc.IN, new javax.xml.namespace.QName("

http://www.w3.org/2001/XMLSchema

", "string"), java.lang.String.class, false, false) param.setOmittable(true) oper.addParameter(param) param = new org.apache.axis.description.ParameterDesc(new javax.xml.namespace.QName("", "arg1"), org.apache.axis.description.ParameterDesc.IN, new javax.xml.namespace.QName("

http://www.w3.org/2001/XMLSchema

", "string"), java.lang.String.class, false, false) param.setOmittable(true) oper.addParameter(param) param = new org.apache.axis.description.ParameterDesc(new javax.xml.namespace.QName("", "arg2"), org.apache.axis.description.ParameterDesc.IN, new javax.xml.namespace.QName("

http://www.w3.org/2001/XMLSchema

", "string"), java.lang.String.class, false, false) param.setOmittable(true) oper.addParameter(param) oper.setReturnType(new javax.xml.namespace.QName("

http://www.w3.org/2001/XMLSchema

", "string")) oper.setReturnClass(java.lang.String.class) oper.setReturnQName(new javax.xml.namespace.QName("", "return")) oper.setStyle(org.apache.axis.constants.Style.WRAPPED) oper.setUse(org.apache.axis.constants.Use.LITERAL) oper.addFault(new org.apache.axis.description.FaultDesc( new javax.xml.namespace.QName("发布的wsdl里的targetNamespace里的url", "Exception"), "Exception", new javax.xml.namespace.QName("发布的wsdl里的targetNamespace里的url", "Exception"), true )) call.setOperation( oper ) call.setOperationName(new javax.xml.namespace.QName("发布的wsdl里的targetNamespace里的url", "opName")) //调用Web Service,传入参数 String res = ( String ) call.invoke( new Object[]("arg0","arg1")) System.out.println("===============") return res }/** * @param args */ public static void main(String[] args) { try { System.out.println(getResult()) } catch (MalformedURLException e) { e.printStackTrace() } catch (RemoteException e) { e.printStackTrace() } catch (ServiceException e) { e.printStackTrace() } catch (SOAPException e) { e.printStackTrace() } }}2、利用Eclipse自动生成WebService client代码就容易多了:(由于还不会发图片,就用语言描述了,大家酬和看吧。。。)首先,new project,选择other,在输入框中输入Web Service Client,选中搜索后的结果,点击Next,在Service definition中输入 WebService的发布地址,点击Finish这样,WebService Client代码已经生成好了。接下来写一个Test类,在main函数中输入如下代码:String endpoint = "服务器的WebService的地址" YourWebServiceNameProxy umsp = new YourWebServiceNameProxy (endpoint) try { String resultStr = umsp.opMethod("arg0","arg1") System.out.println(resultStr) } catch (Exception e) { System.out.println("异常") e.printStackTrace()} catch (RemoteException e) { System.out.println("RemoteException异常") e.printStackTrace()}

最新文章