Java如何调用webservice

转自:微点阅读  https://www.weidianyuedu.com/content/0317763185325.html

1 Java调用WebService可以直接使用Apache提供的axis.jar自己编写代码,或者利用Eclipse自动

生成WebService client代码,利用其中的Proxy类进行调用。理论上是一样的,只不过用Eclipse自

动生成代码省事些。

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 = \服务地址\

// 创建 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\

org.apache.axis.message.SoAPHeaderElement header = new

SoAPHeaderElement(headername);

header.addTextnode( \

call.addHeader(header);

// SoAPHeaderElement soapHeaderElement = new SoAPHeaderElement(\发布的wsdl里

的targetnamespace里的url\

// soapHeaderElement.setnamespaceURI(\发布的wsdl里的targetnamespace里的url\

// try

// {

// soapHeaderElement.addchildElement(\

// }

// 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(\

param = new org.apache.axis.description.ParameterDesc(new

javax.xml.namespace.Qname(\\org.apache.axis.description.ParameterDesc.In,

new javax.xml.namespace.Qname(\www.w3.org/2001/XMLSchema\\

java.lang.String.class, false, false);

param.setomittable(true);

oper.addParameter(param);

param = new org.apache.axis.description.ParameterDesc(new

javax.xml.namespace.Qname(\\org.apache.axis.description.ParameterDesc.In,

new javax.xml.namespace.Qname(\www.w3.org/2001/XMLSchema\\

java.lang.String.class, false, false);

param.setomittable(true);

oper.addParameter(param);

param = new org.apache.axis.description.ParameterDesc(new

javax.xml.namespace.Qname(\\org.apache.axis.description.ParameterDesc.In,

new javax.xml.namespace.Qname(\www.w3.org/2001/XMLSchema\\

java.lang.String.class, false, false);

param.setomittable(true);

oper.addParameter(param);

oper.setReturnType(new

javax.xml.namespace.Qname(\www.w3.org/2001/XMLSchema\

oper.setReturnclass(java.lang.String.class);

oper.setReturnQname(new javax.xml.namespace.Qname(\

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(\发布的wsdltargetnamespace里的url\

\

new javax.xml.namespace.Qname(\发布的wsdltargetnamespace里的url\

true

));

call.setoperation( oper );

call.setoperationname(new javax.xml.namespace.Qname(\发布的wsdltargetnamespace里的url\

里的

里的

里的

//调用Web Service,传入参数

String res = ( String ) call.invoke( new object[](\

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(\

System.out.println(resultStr);

} catch (Exception e) {

System.out.println(\异常\

e.printStackTrace();

} catch (RemoteException e) {

System.out.println(\异常\

e.printStackTrace(); }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值