Axis2 Eclipse 开发webservice(4)

写一个简单的java类,通过axis2发布为webservice,返回多个结果值,进行访问查询。

下面为java类

package yang.service.person;

import java.util.ArrayList;
import java.util.Iterator;


class Person {

	private int num;
	private String name;
	private String sex;
	
	public Person() {
		this.num = 000;
		this.name = "";
		this.sex = "";
	}
	
	public Person(int num, String name, String sex) {
		this.num = num;
		this.name = name;
		this.sex = sex;
	}
	
	public int getNum() {
		return num;
	}
	public void setNum(int num) {
		this.num = num;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getSex() {
		return sex;
	}
	public void setSex(String sex) {
		this.sex = sex;
	}
	
}

public class PersonService {
	
    private static ArrayList <Person> person = new ArrayList<Person>();

	public static void init(){		 
		person.add(new Person(1001, "杨飞", "男"));
		person.add(new Person(1002, "张三", "男"));
		person.add(new Person(1003, "王五", "男"));
		person.add(new Person(1004, "李四", "女"));
		person.add(new Person(1005, "李四", "男"));
	}
	
	public static ArrayList<Person> Queryall(String query) {
		init();
		if (query.equals("*"))
			return person;
		else 
			return new ArrayList<Person>();
	}
	public static ArrayList<Person> QueryPersonByNum(int num){
		ArrayList <Person> per = new ArrayList<Person>();
		for (Iterator<Person> it = person.iterator(); it.hasNext();) {
			Person pp  = it.next();
			if (pp.getNum() == num) {
				per.add(pp);				
			}
		}
		return per;
	}
	public static ArrayList<Person> QueryPersonByName( String name){
		ArrayList <Person> per = new ArrayList<Person>();
		for (Iterator<Person> it = person.iterator(); it.hasNext();) {
			Person pp  = it.next();
			if (pp.getName().equals(name)) {
				per.add(pp);				
			}
		}
		return per;
	}
	
	public static ArrayList<Person> AddPerson(int num, String name, String sex){
		ArrayList <Person> per = new ArrayList<Person>();
		person.add(new Person(num, name, sex));
		per.add(new Person(num, name, sex));
		return per;
	}
	
	public static String DelPersonByNum(int num){
		for (Iterator<Person> it = person.iterator(); it.hasNext();) {
			Person pp  = it.next();
			if (pp.getNum() == num) {
				person.remove(pp);
				return "Deleted Successful";
			}
		}
		return "Deleted Error";
		
	}
	
	public static ArrayList<Person> UpdatePersonByNum(int num, String name, String sex){
		ArrayList <Person> per = new ArrayList<Person>();
		int i = 0;
		for (Iterator<Person> it = person.iterator(); it.hasNext(); ) {
			Person pp  = it.next();
			if (pp.getNum() == num) {
				person.get(i).setName(name);	
				person.get(i).setSex(sex);	
				per.add(new Person(num, name, sex));
			}
			i++;
		}
		return per;
	}
	
}

利用axis2插件,发布为webservice,如下所示:

wsdl文件如下:


利用soapUI访问,首先访问Queryall进行数据初始化

QueryPersonByName


QueryPersonByNum

UpdatePersonByNum

AddPerson

DelPersonByNum


客户端代码测试,利用Httpclient访问服务

package com.yang.personservice.httpclient;

import java.io.IOException;

import org.apache.http.HttpEntity;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.util.EntityUtils;

public class PersonServiceClientTest {


	public static void main(String[] args) throws ClientProtocolException,
			IOException {
		// 服务地址
		String url = "http://localhost:8080/axis2/services/PersonService?wsdl";
		// 请求报文
		String soapRequestData = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>"
				+ "<soap:Envelope xmlns:soap=\"http://www.w3.org/2003/05/soap-envelope\" xmlns=\"http://person.service.yang\">"
				+ "<soap:Header/>" 
				+ "<soap:Body>" 
				+ "<QueryPersonByNum>"
				+ "<num>1001</num>" 
				+ "</QueryPersonByNum>" 
				+ "</soap:Body>"
				+ "</soap:Envelope>";
		// 创建客户端
		CloseableHttpClient httpclient = HttpClients.createDefault();
		// *****************get方法请求数据*********************
		// 创建httpget
		HttpGet httpget = new HttpGet(url);
		// 执行httpget
		CloseableHttpResponse getresponse = httpclient.execute(httpget);
		System.out.println("Get Response Result:" + getresponse.toString());
		// 获取消息实体,输出响应内容
		System.out.println("Get Response Entity********************** " );
		HttpEntity entity = getresponse.getEntity();
		if (entity != null) {
			String message = EntityUtils.toString(entity);
			System.out.println(message);
		}
		EntityUtils.consume(entity);
		getresponse.close();
		// httpclient.close();

		// *****************post方法提交请求报文*********************
		System.out.println("************服务请求********************\n");
		// 创建httppost
		HttpPost httppost = new HttpPost(url);
		
		// 把Soap请求数据添加到ttppost
		HttpEntity postrequest = new StringEntity(soapRequestData);
		httppost.setHeader("Content-Type", "application/soap+xml; charset=utf-8");
		httppost.setEntity(postrequest);
		
		//输出httppost请求报文
		System.out.println("SOAP Request********************** " );
		//System.out.println(EntityUtils.toString(postrequest));
		System.out.println(EntityUtils.toString(httppost.getEntity()));
		
		//执行post请求,输出响应结果
		System.out.println("SOAP Response ********************** " );
		CloseableHttpResponse postresponse = httpclient.execute(httppost);
		System.out.println(postresponse.getStatusLine());
		
		HttpEntity postresponseentity = postresponse.getEntity();
		String postresult = EntityUtils.toString(postresponseentity);
		System.out.println(postresult);
		
		EntityUtils.consume(postrequest);
		EntityUtils.consume(postresponseentity);
		
		httpclient.close();  

	}
}

结果如下:

HTTP/1.1 200 OK
<?xml version='1.0' encoding='utf-8'?><soapenv:Envelope xmlns:soapenv="http://www.w3.org/2003/05/soap-envelope"><soapenv:Body><ns:QueryPersonByNumResponse xmlns:ns="http://person.service.yang" xmlns:ax21="http://person.service.yang/xsd"><ns:return xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="ax21:Person"><ax21:name>杨少飞</ax21:name><ax21:num>1001</ax21:num><ax21:sex>男</ax21:sex></ns:return></ns:QueryPersonByNumResponse></soapenv:Body></soapenv:Envelope>

利用axis2生成客户端代码

编写axis测试类

package yang.service.person.clienttest;

import java.rmi.RemoteException;

import yang.service.person.axiscode.PersonServiceStub;
import yang.service.person.axiscode.QueryPersonByNum;
import yang.service.person.axiscode.QueryPersonByNumResponse;
import yang.service.person.axiscode.Queryall;
import yang.service.person.axiscode.QueryallResponse;

public class PersonTest {

	public static void main(String[] args) throws RemoteException {
		// TODO Auto-generated method stub
		PersonServiceStub personstub = new PersonServiceStub();
		Queryall query = new Queryall();
		query.setQuery("*");
		QueryallResponse resonpse = personstub.queryall(query);
		System.out.println(resonpse.get_return());
		   
		QueryPersonByNum query4 = new QueryPersonByNum();
		query4.setNum(1001);
		QueryPersonByNumResponse resonpse4 = personstub.queryPersonByNum(query4);
		System.out.println(resonpse4.get_return());
		
	}
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值