websevice rpc方式接口与service实现客户端

service实现接口

package test;






import java.rmi.RemoteException;


import javax.xml.rpc.ServiceException;


import org.apache.axis.client.Call;
import org.apache.axis.client.Service;
import org.junit.Test;


import sun.security.krb5.Config;










import com.tmri.tfc.webservice.Trans;
import com.tmri.tfc.webservice.TransService;






public class test1 {


@Test
public void ss(){
try {
Service ser=new Service();
Call call= (Call) ser.createCall();
call.setTargetEndpointAddress("http://10.31.178.206:9080/rminf/services/Trans?wsdl");//wsdl路径地址
call.setOperationName("InitTrans");//目标方法
call.setTimeout(60000);//设置时间
call.addParameter("kkbh", org.apache.axis.encoding.XMLType.XSD_STRING, javax.xml.rpc.ParameterMode.IN);//设置对应的参数类型
call.addParameter("fxlx", org.apache.axis.encoding.XMLType.XSD_STRING, javax.xml.rpc.ParameterMode.IN);
call.addParameter("cdh", org.apache.axis.encoding.XMLType.XSD_LONG, javax.xml.rpc.ParameterMode.IN);
call.addParameter("info", org.apache.axis.encoding.XMLType.XSD_STRING, javax.xml.rpc.ParameterMode.IN);
call.setReturnType(org.apache.axis.encoding.XMLType.XSD_STRING);
call.setUseSOAPAction(true);
call.setSOAPActionURI("http://www.wj.com/Rpc");
String kkbh="130200100133";
String fxlx="1";
long cdh=1;
String info="<info><jkid>62C01</jkid><jkxlh>7A1E1D08000703050A15020100020902000608060B0C17E4FD366D72692E636E</jkxlh></info>";
String ss=(String) call.invoke(new Object[]{kkbh,fxlx,cdh,info});//给目标方法赋值
System.out.println(ss);
} catch (ServiceException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (RemoteException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}


}


}


webservice实现客户端,rpc方式

package chenjunliang;




import javax.xml.namespace.QName;


import org.apache.axis2.AxisFault;
import org.apache.axis2.addressing.EndpointReference;
import org.apache.axis2.client.Options;
import org.apache.axis2.rpc.client.RPCServiceClient;

public class WebServiceClientUtil {
/**
* 超时时间,单位:毫秒,默认为300000(5分钟)
*/
private static long timeout = 300000;

/**
* 根据实际情况,常用的webService客户端调用方法,输入xml字符窜,返回xml字符窜

* @param webServiceUrl
* @param targetNamespace
* @param methodName
* @param parameter
* @return
*/
public static String commonInvoke(String webServiceUrl,
String targetNamespace, String methodName, String parameter) {
// 默认返回值
String returnVal = "";
try {
// 使用RPC方式调用WebService
RPCServiceClient serviceClient = new RPCServiceClient();
Options options = serviceClient.getOptions();
// 指定调用WebService的URL
EndpointReference targetEPR = new EndpointReference(webServiceUrl);
options.setTo(targetEPR);
options.setTimeOutInMilliSeconds(timeout);
// 指定webservice方法的参数值
Object[] opAddEntryArgs = new Object[] { parameter };
// 指定webservice方法返回值的数据类型的Class对象
Class<?>[] classes = new Class[] { String.class };
// 指定要调用的webservice方法及WSDL文件的命名空间
QName opAddEntry = new QName(targetNamespace, methodName);
// 获得 调用webservice方法返回值
Object returnObj = serviceClient.invokeBlocking(opAddEntry,opAddEntryArgs, classes)[0];
if (returnObj != null) {
returnVal = returnObj.toString();
}
} catch (AxisFault e) {
e.printStackTrace();
}
return returnVal;
}


//测试用例
public static void main(String args[]){
String service_url = "http:/ip/dsp/services/TerminalDataServer?wsdl";//查询资源基本信息
String service_namespace = "http://server.webservice.dsp.dm.com";
String service_method = "request";

StringBuffer sb = new StringBuffer();
sb.append("<request>");
sb.append("<version>1.0</version><head>");
sb.append("<request_id>6830BD72F3B241B0BBD7F170257EC32A</request_id>");
sb.append("<system_code/>");
sb.append("<service_code>DataQueryRequestHandler</service_code>");


sb.append("<user_name>tangshanwebservice</user_name>");
sb.append("<user_password>21218cca77804d2ba1922c33e0151105</user_password>");
sb.append("<encrypt_flag>0</encrypt_flag>");
sb.append("<resource_id>5A08D474929576862C53C0735C87F1D6</resource_id>");



sb.append("<request_type/>");
sb.append("<notify_url/>");
sb.append("<memo1>130283199512040017</memo1>");
sb.append("</head>");
sb.append("<parameter>");
sb.append("<HPHM></HPHM><GWSJ>null</GWSJ><GWSJ__start></GWSJ__start><GWSJ__end></GWSJ__end>");
// 此处是各接口具体的参数描述,如果需要加密,此信息按照encrypt_flag标签加密
sb.append("</parameter> ");
sb.append("</request>");
try {
String result = WebServiceClientUtil.commonInvoke(service_url, service_namespace, service_method, sb.toString());
System.out.println("#############################响应请求返回的结果值:"+result);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}













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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值