java webservice 参数 xml,webservice 的调用 客户端 参数 List<Object> 的实例,转换成xml格式...

首先:需要用到的jar包axis-ant.jar,axis.jar,wsdl4j-1.5.1.jar

1、然后server-config.wsdd  文件的配置:

xmlns="http://xml.apache.org/axis/wsdd/"

xmlns:java="http://xml.apache.org/axis/wsdd/providers/java">

2、web.xml配置---

org.apache.axis.transport.http.AxisHTTPSessionListener

AxisServlet

org.apache.axis.transport.http.AxisServlet

AdminServlet

org.apache.axis.transport.http.AdminServlet

100

AxisServlet

/showAllAxisServlet

AxisServlet

/services/*

wsdl

text/xml

3、过滤器----由于web.xml配置文件中,struts2的映射是/*,自定义一个过滤器,放行webservice请求

public class WsFilter extends StrutsPrepareAndExecuteFilter {

@Override

public void doFilter(ServletRequest req, ServletResponse res,

FilterChain chain) throws IOException, ServletException {

System.out.println("----------------------");

HttpServletRequest request = (HttpServletRequest) req;

HttpServletResponse response = (HttpServletResponse) res;

if (request.getRequestURI().contains("?wsdl")

|| request.getRequestURI().contains("showAllAxisServlet")

|| request.getRequestURI().contains("/services")) {

chain.doFilter(request, response);

} else {

try {

prepare.setEncodingAndLocale(request, response);

prepare.createActionContext(request, response);

prepare.assignDispatcherToThread();

if (excludedPatterns != null

&& prepare.isUrlExcluded(request, excludedPatterns)) {

chain.doFilter(request, response);

} else {

request = prepare.wrapRequest(request);

ActionMapping mapping = prepare.findActionMapping(request,

response, true);

if (mapping == null) {

boolean handled = execute.executeStaticResourceRequest(

request, response);

if (!handled) {

chain.doFilter(request, response);

}

} else {

execute.executeAction(request, response, mapping);

}

}

} finally {

prepare.cleanupRequest(request);

}

}

}

}

4、前台 点击  按钮  通过Action再请求 service:

jsonArray的包:import net.sf.json.JSONArray;

public void aa(){

①参数 list List list, List list1

②将 list转为 json数组格式

JSONArray listJson = JSONArray.fromObject(list);

JSONArray list1Json = JSONArray.fromObject(list1);

③将list封装到map

Map map=new HashMap();

//是退回 还是 第一次插入

map.put("listJson ", listJson );

map.put("list1Json ", list1Json );

④调 接口的方法

query(map);

}

/**

* 调用 外部提供的 接口,

* @return

*/

private void query(Map params) throws RuntimeException {

Service service = new Service();

XMLRead reader = new XMLRead();

try {

// 封装参数xml字符串

String inXml = packageParamsXml(params);

Call call = (Call) service.createCall();

//此处为 wenservice服务器端的 url

String targetEendPoint = "http://192.168.88.128:81/country/services/SaveDataServiceImpl?wsdl";

//设置地址

call.setTargetEndpointAddress(new java.net.URL(targetEendPoint));

//设置要执行的方法

call.setOperationName(new QName(targetEendPoint,"saveCheckData"));//WSDL里面描述的接口名称

//接口的参数

call.addParameter(new QName(targetEendPoint, "inXml"), XMLType.SOAP_STRING, ParameterMode.IN);

//设置返回类型

call.setReturnType(new QName(targetEendPoint, "response"), String.class);

//设置返回的类型

//call.setReturnType(org.apache.axis.Constants.XSD_STRING);

//执行,调用webservice

String result = (String) call.invoke(new Object[]{inXml});

TreeMap m = reader.parseXml(result);

if ("0".equals(m.get("ifSuccess"))) {

throw new RuntimeException();

}

System.out.println("返回的结果是:"+result);

/* QName qn = new QName("urn:ParData","params1");

call.registerTypeMapping(ParData.class, qn,

new org.apache.axis.encoding.ser.BeanSerializerFactory(ParData.class,qn),

new org.apache.axis.encoding.ser.BeanDeserializerFactory(ParData.class,qn));

// 设置返回类型

call.setReturnType(qn, ParData.class);

call.setOperationName(qn);

call.addParameter("params1", qn, javax.xml.rpc.ParameterMode.IN);

ParData params1 = new ParData();

ParData ret = (ParData) call.invoke(new Object[] { params1 });

System.out.println("return value is " + ret);*/

} catch (Exception e) {

e.printStackTrace();

}

}

//封装 参数,将 参数 转换成 xml 格式,webservice的调用 所能传递的参数格式 xml

private String packageParamsXml(Map params) {

StringBuffer sbBuf = new StringBuffer();

sbBuf.append("<?xml version='1.0' encoding='utf-8'?>");

sbBuf.append("");

sbBuf.append("");

sbBuf.append("");

return sbBuf.toString();

}

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
你可以使用Postman来发起一个请求到Webservice接口。首先,打开Postman并新建一个Request请求。填写Webservice地址,将其粘贴到地址栏中,例如:【http://xxx:xx/xx/xx/xx?WSDL】。请确保请求方式设置为POST,并在请求头headers参数中添加Content-Type,其值为text/xml;charset=utf-8。请求报文和返回报文都是XML格式,所以你需要将请求报文以XML格式进行编写。具体的请求报文可以参考提供的示例,如下所示: <?xml version="1.0" encoding="utf-8"?> <soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> <soap:Body> <Login xmlns="http://tempuri.org/"> <user>admin</user> <psd>123456</psd> </Login> </soap:Body> </soap:Envelope> 请将上述XML报文作为参数传递给Webservice接口。这样,你就可以使用Postman发送请求到Webservice接口了。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [使用PostMan测试WebService接口](https://blog.csdn.net/duleilewuhen/article/details/127931631)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [接口测试工具Postman](https://download.csdn.net/download/weixin_38629391/15437504)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [postman请求webService](https://blog.csdn.net/u013314974/article/details/126083353)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值