加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

WebService学习总结七 WebService 对于其他的数据类型

发布时间:2020-12-16 22:09:14 所属栏目:安全 来源:网络整理
导读:客户端参考wsdl文档向服务器发送soap消息(http+xml),服务器依据wsdl进行解析,使用soap消息响应客户端,客户端再根据wsdl文档解析。完成一次交互。 如果使用jdk编写服务端代码,对于返回map的数据类型,无法发布。此时应该使用cxf进行编写服务端代码,支


客户端参考wsdl文档向服务器发送soap消息(http+xml),服务器依据wsdl进行解析,使用soap消息响应客户端,客户端再根据wsdl文档解析。完成一次交互。

如果使用jdk编写服务端代码,对于返回map的数据类型,无法发布。此时应该使用cxf进行编写服务端代码,支持 int String boolean javabean list set map等数据类型。

客户端对于返回map数据的处理:

//m3方法返回map,解析方式比较特殊
Return r=ds.m3("a"); //返回map时候是个Return,先得到其list,再解析list的Entry,
List<Entry> l=r.getEntry();
for(Entry e:l){
System.out.println(e.key+","+e.value);
}


服务端代码:

package com.dt.ws;
/*
 * jdk方式发布的webService不支持返回map,cxf支持
 */
import java.util.List;
import java.util.Map;

import javax.jws.WebService;
@WebService
public interface DtService {
	public boolean m1(int a1,boolean a2,String a3,List a4,Map a5);
	public List m2(String a1);
	public Map m3(String a1);
}

package com.dt.ws;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import javax.jws.WebService;
@WebService
public class DtServiceImpl implements DtService {

	@Override
	public boolean m1(int a1,Map a5) {
		System.out.println("Server:m1:"+a3);
		return false;
	}

	@Override
	public List m2(String a1) {
		System.out.println("Server:m2:"+a1);
		List l=new ArrayList();
		l.add("a");
		l.add("b");
		return l;
	}

	@Override
	public Map m3(String a1) {
		System.out.println("Server:m3:"+a1);
		Map m=new HashMap();
		m.put("a","a");m.put("b","b");
		return m;
	}

}


发布


package com.dt.ws;

import javax.xml.ws.Endpoint;

public class Test {

	public static void main(String[] args) {
		Endpoint.publish("http://192.168.1.101:8899/WS/DtService",new DtServiceImpl());
		System.out.println("发布成功");
	}

}

客户端代码:

使用wsimport 生成:

/ws_dataType_client/src/com/dt/ws/DtService.java
/ws_dataType_client/src/com/dt/ws/DtServiceImplService.java
/ws_dataType_client/src/com/dt/ws/M1.java
/ws_dataType_client/src/com/dt/ws/M1Response.java
/ws_dataType_client/src/com/dt/ws/M2.java
/ws_dataType_client/src/com/dt/ws/M2Response.java
/ws_dataType_client/src/com/dt/ws/M3.java
/ws_dataType_client/src/com/dt/ws/M3Response.java
/ws_dataType_client/src/com/dt/ws/ObjectFactory.java
/ws_dataType_client/src/com/dt/ws/package-info.java


package com.dt.ws;

import java.util.List;

import com.dt.ws.M3Response.Return;
import com.dt.ws.M3Response.Return.Entry;
/*
 * jdk方式发布的webService不支持返回map,cxf支持
 */
public class Test {

	public static void main(String[] args) {
		DtServiceImplService factory=new DtServiceImplService();
		DtService ds=factory.getDtServiceImplPort();
		System.out.println(ds.m1(0,true,"a",null,null));;
		System.out.println(ds.m2("a"));
		//m3方法返回map,解析方式比较特殊
		Return r=ds.m3("a"); //返回map时候是个Return,先得到其list,List<Entry> l=r.getEntry();
		for(Entry e:l){
			System.out.println(e.key+","+e.value);
		}
	

	}

}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读