您的位置:首页 > 教程资讯 > 皇冠体育的网址 > JavaScript > java如何调用webservice接口

java如何调用webservice接口

发布于:2016-06-27 09:49:04   分享到:

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 = "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();
}

标签:

Java webservice

关于我们  加入我们  版权声明  商务合作  友情链接  网站地图  站长统计

脚本大全-脚本语言之家-版权所有 

Copyright (C) 2016 jiaoben.net, All Rights Reserved