本文主要是介绍java对接webservice服务实现推送,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
【背景】
前不久接到一个任务需要将我们平台的内容推送到第三方的一个webService服务中,我们平台接口使用java来做的,所以需要通过java调用webService服务实现推送效果,不多说直接上干货。
【过程】
第一步:查看要推送过去的webservice服务的接口:
第二步:可以先通过SoapUI 5.2.1或者其它工具进行测试验证(切记需要输入对应的参数),如下图:
第三步:通过java代码拼接参数(拼接为类似于SoapUI参数的方式,的一个String字符串,切记将对应参数放入其中哦),如下图:
第四步:通过http请求调用,但是必须用下面的方法进行调用(其中下面的StringRequestEntity对应的第二个参数contentType类型需要和图一中的数据第三行,content-Type类型对应才可以调用通),如下图:
第五步:进行测试验证工作
【代码】
只提供一下http请求方法对应的代码,至于调用的时候传入的拼接参数的方法读者可以自己写一下。
public static String sendPostForWebService(String requestUrl, String paramStr) {if (requestUrl == null || "".equals(requestUrl)) {logger.error("请求地址为null");return null;}if (null == paramStr) {logger.error("请求参数为null");return null;}StringRequestEntity requestEntity = null;try {
// requestEntity = new StringRequestEntity(paramStr, "application/soap+xml",CODE);requestEntity = new StringRequestEntity(paramStr, "text/xml",CODE);} catch (UnsupportedEncodingException e) {logger.error(e.getMessage());}PostMethod postMethod = new PostMethod(requestUrl);postMethod.setRequestEntity(requestEntity);HttpClient httpClient = new HttpClient();/* 发送请求,并获取响应对象 */int statusCode = -1;try {statusCode = httpClient.executeMethod(postMethod);} catch (HttpException e) {logger.error(e.getMessage());} catch (IOException e) {logger.error(e.getMessage());}if (statusCode != HttpStatus.SC_OK) {logger.error("post请求失败: " + postMethod.getStatusLine());return null;}String resultJson = "";try {InputStream io = postMethod.getResponseBodyAsStream();resultJson = inputStream2String(io);logger.info("请求结果 : " + resultJson);} catch (IOException e) {logger.error("获取ResponseBody时出错:" + e.getMessage());}return resultJson;}
【遇到的困难】
1.开始不知道如何进行推送,也不知道如何验证,所以查询过后找到了SoapUI 5.2.1这个工具,工具读者朋友直接百度吧!
2.通过java调用StringRequestEntity中的第二个参数也就是请求的contentType不对应一直调用不通
【总结】
开始做的时候一头雾水,各种查询,各种尝试,最终解决完成之后发现是如此简单,欢迎读者朋友交流沟通。
这篇关于java对接webservice服务实现推送的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!