「java调用wsdl」java调用wsdl接口示例

博主:adminadmin 2022-12-13 03:00:20 66

今天给各位分享java调用wsdl的知识,其中也会对java调用wsdl接口示例进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

本文目录一览:

java怎么调用webServic的方法

1、编写代码方式:

package com.yudun.test;

import java.rmi.RemoteException;

import org.apache.axis.client.Call;

import org.apache.axis.client.Service;

import org.apache.axis.message.PrefixedQName;

import org.apache.axis.message.SOAPHeaderElement;

import com.cezanne.golden.user.Exception;

import com.cezanne.golden.user.UserManagerServiceProxy;

import javax.xml.namespace.QName;

import java.net.MalformedURLException;

import javax.xml.rpc.ServiceException;

import javax.xml.soap.Name;

import javax.xml.soap.SOAPException;

public 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("", "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("", "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("", "string"), java.lang.String.class, false, false);

param.setOmittable(true);

oper.addParameter(param);

oper.setReturnType(new javax.xml.namespace.QName("", "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();

}

java如何调用webservice的某个方法

webservice对外提供wsdl描述文件,改文件描述了webservice对外提供的方法名,参数,返回值等信息,所以,想要调用webservice,首先你需要知道webservice的wsdl。

知道wsdl后,在myeclipse中新建一个 webservice client,然后将该wsdl的url填入,myeclipse会自动生成一些类,然后,根据这些类就可以调用webservice了

java cxf动态调用服务端的webservices方法

WebService实现

1、 整个项目使用CXF来实现,在实现的过程中,在MyEclipse中对CXF下lib中的所有jar文件通过引入外部包来处理。

2、 在MyEclipse6.5中可以实现服务器端和客户端,但是客户端在使用wsdl进行动态调用的过程中总是报错,最后使用MyEclipse9.0实现了进行动态调用的实现。其中发生的错误如下:

(1)Exception in thread "main" java.lang.LinkageError: 正在从引导类加载器加载 JAXB 2.1 API, 但此 RI (来自jar:file:/D:/CXF/lib/jaxb-impl-2.2.5.jar!/com/sun/xml/bind/v2/model/impl/ModelBuilder.class) 需要 2.2 API。请使用授权目录机制将 jaxb-api.jar 放在引导类加载器中。(请参阅 )

解决办法:

通过删除引入包中的jaxb-impl-2.2.5.jar文件可以解决。

(2)java.lang.IllegalArgumentException: Can not set final com.sun.tools.internal.xjc.reader.internalizer.InternalizationLogic field

如何用java调用cxf webservice接口

WebService CXF客户端报 java.lang.RuntimeException: Cannot create a secure XMLInputFactory 异常,查了许多网络关于该问题的解决办法,很多都说缺少包问题,但问题是我的包都存在,我用的是apache-cxf-2.7.6,经过不懈努力终于解决了,我的服务端用的是web project,客户端用的是java project,客户端jar包是引用其它地方的,后来建一个web project客户端,把jar直接复制到project的lib目录下就行了,jdk用的是1.7,客户端依赖的接口用wsdl2java生成的。

java调用wsdl的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于java调用wsdl接口示例、java调用wsdl的信息别忘了在本站进行查找喔。

The End

发布于:2022-12-13,除非注明,否则均为首码项目网原创文章,转载请注明出处。