webservice [xfire] 客户端
最近学习了xfire 发现xfire 开发是很简单,把客户端代码总结一下:
public class WebServiceClient {
public static void main(String[] args) throws Exception {
WebServiceClient test = new WebServiceClient();
test.testClientByClass();
test.testClient2();
test.testAuthClient();
test.testClient();
}
public void testClient() throws Exception {
String wsdl = “MathServer.wsdl”; // 对应的WSDL文件
//ClassPathResource读取wsdl
// Resource resource = new ClassPathResource(wsdl);
// Client client = new Client(resource.getInputStream(), null);
//URL读取wsdl
//Client client = new Client(new URL(“http://localhost:7001/XfireC/service/MathServer?wsdl”)); // 根据WSDL创建客户实例
//根据WSDL创建客户实例
InputStream is = this.getClass().getClassLoader().getResourceAsStream(
wsdl);
//
Client client = new Client(is, null); // 根据WSDL创建客户实例
// //begin 代理设置
// HttpClient httpclient = new HttpClient();
// httpclient.getParams().setAuthenticationPreemptive(true);
// UsernamePasswordCredentials creds = new UsernamePasswordCredentials(
// “zhangk”, “zhangk”);
// httpclient.getState().setProxyCredentials(AuthScope.ANY, creds);
// HostConfiguration hcf = new HostConfiguration();
// hcf.setProxy(“proxy.epri.ac.cn”, 8080);
//
// httpclient.setHostConfiguration(hcf);
// client.setProperty(CommonsHttpMessageSender.HTTP_CLIENT, httpclient);
// List handlers = new ArrayList();
// handlers.add(new HttpClientSettingHandler(httpclient));
// client.setOutHandlers(handlers);
//end 代理设置
//设置代理(成功)
//begin必须加入次属性
client.setProperty(CommonsHttpMessageSender.DISABLE_PROXY_UTILS, “true”);
//end必须加入次属性
client.setProperty(CommonsHttpMessageSender.HTTP_PROXY_HOST,
“172.16.8.4″);
client.setProperty(CommonsHttpMessageSender.HTTP_PROXY_PORT, “8080″);
client.setProperty(CommonsHttpMessageSender.HTTP_PROXY_USER, “zhangk”);
client.setProperty(CommonsHttpMessageSender.HTTP_PROXY_PASS, “zhangk”);
//end 代理设置
//输入参数
MathBean mbean = new MathBean();
//返回参数
ReMathBean rbean = new ReMathBean();
mbean.setA(5);
mbean.setB(6);
Object[] objArray = new Object[1];
objArray[0] = mbean;
// 调用特定的Web Service方法
Object[] results = client.invoke(“add”, objArray);
rbean = (ReMathBean) results[0];
System.out.println(“result: a = ” + rbean.getA() + ” ; b = ”
+ rbean.getB() + “; sum = ” + rbean.getSum());
}
public void testClient2(){
//根据client.xml 读取bean 配置
ApplicationContext ctx = new ClassPathXmlApplicationContext(
“client.xml”);
MathBean mbean = new MathBean();
mbean.setA(5);
mbean.setB(6);
ReMathBean rbean = new ReMathBean();
rbean = ((MathServer) ctx.getBean(“testWebService”)).add(mbean);
System.out.println(“result: a = ” + rbean.getA() + ” ; b = ”
+ rbean.getB() + “; sum = ” + rbean.getSum());
}
public void testAuthClient() throws MalformedURLException{
Service serviceModel = new ObjectServiceFactory().create(ReturnListService.class);
ReturnListService service = (ReturnListService) new XFireProxyFactory().create(serviceModel,
“http://localhost:7001/XfireC/service/ReturnListService”);
XFireProxy proxy = (XFireProxy)Proxy.getInvocationHandler(service);
Client client = proxy.getClient();
client.addOutHandler(new ClientAuthHandler(“xfireUser”, “111111″));
// 执行下面代码会进行验证
MathBean mb = new MathBean();
mb.setA(11);
mb.setB(12);
List list = service.listMehtod(mb);
for(Iterator it = list.iterator();it.hasNext();){
ReMathBean rmb = (ReMathBean)it.next();
System.out.println(rmb.getA()+”+”+rmb.getB()+”=”+rmb.getSum());
}
}
public void testClientByClass() throws MalformedURLException{
Service serviceModel = new ObjectServiceFactory().create(MathServer.class);
MathServer service = (MathServer) new XFireProxyFactory().create(serviceModel,
“http://localhost:7001/XfireC/service/MathServer”);
XFireProxy proxy = (XFireProxy)Proxy.getInvocationHandler(service);
Client client = proxy.getClient();
// client.addOutHandler(new ClientAuthHandler(“xfireUser”, “111111″));
// 执行下面代码会进行验证
MathBean mb = new MathBean();
mb.setA(11);
mb.setB(12);
ReMathBean bean = (ReMathBean)service.add(mb);
System.out.println(bean.getA()+”+”+bean.getB()+”=”+bean.getSum());
}
}