通过java调用webservice服务详细案例一
前言
1)通过一个简单的java案例如何调用第三方提供的web服务,想想自己测试接口的时候用过,可能对有些新伙伴有些帮助。
所以还是记录一下吧。如有不足,请指教。。。。。
一、用到的依赖包
(可以在mevan中央仓库自行下载 https://mvnrepository.com/)
<dependency><groupId>wsdl4j</groupId><artifactId>wsdl4j</artifactId><version>1.6.3</version></dependency><!-- axis 1.4 jar start --><dependency><groupId>org.apache.axis</groupId><artifactId>axis</artifactId><version>1.4</version></dependency><!-- 处理xml--><dependency><groupId>org.dom4j</groupId><artifactId>dom4j</artifactId><version>2.1.1</version></dependency>
二、说明
1、通过java程序远程访问地方服务提供的webservice服务,需要传入四个参数2、通过读取本地文件,并判断是否符合xml格式3、如符合,则格式化xml,提高阅读性
三、代码样例
package cn.tx.webservice;import org.apache.axis.client.Service;
import org.apache.axis.encoding.XMLType;
import javax.xml.namespace.QName;
import org.apache.axis.client.Call;import org.dom4j.*;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.XMLWriter;
import org.xml.sax.InputSource;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.rpc.ParameterMode;
import javax.xml.rpc.ServiceException;
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.StringReader;
import java.io.StringWriter;
import java.rmi.RemoteException;/*** @ClassName SendSynyiPatientCardAdd* @Description TODO* @Author jiac* @Date 2021/11/5 14:08* @Version 1.0**/public class SendSynyiPatientCardAdd {//设置访问wsdl服务地址private final String url="http://localhost:22002/services/HIS?wsdl";//命名空间private final String namespace="www.synyi.com";//具体方法private final String method="invoke";//设置接口名称// private final String soapAction="";public String sendPatientAdd(String services,String urid,String pwd,String parameter) throws ServiceException, ServiceException, RemoteException {Service service=new Service();Call call = (Call) service.createCall();call.setTargetEndpointAddress(url);//设置请求wsdlcall.setOperationName(new QName(namespace,method)); //设置请求命名空s间及具体方法//设置入参call.addParameter("services", XMLType.XSD_STRING, ParameterMode.IN);//设置请求参数1call.addParameter("urid", XMLType.XSD_STRING, ParameterMode.IN);//设置请求参数2call.addParameter("pwd", XMLType.XSD_STRING, ParameterMode.IN);//设置请求参数3call.addParameter("parameter", XMLType.XSD_STRING, ParameterMode.IN);//设置请求参数4call.setUseSOAPAction(true); //设置使用soap操作call.setTimeout(6000); //设置超时时间call.setReturnType(XMLType.XSD_STRING);//设置返回类型Object[] obj = { services, urid, pwd,parameter};String invoke = (String)call.invoke(obj);return invoke;}//判断是否符合xml格式要求public static boolean isXmlDocument(String xml){boolean isxml=true;DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory.newInstance();DocumentBuilder documentBuilder=null;try {documentBuilder= documentBuilderFactory.newDocumentBuilder();documentBuilder.parse(new InputSource(new StringReader(xml)));} catch (Exception e) {isxml=false;}return isxml;}//将字符串string的xml 进行格式化public static String formatXml(String xml) throws Exception {boolean isxml = isXmlDocument(xml);if(isxml==false){return "false";}org.dom4j.Document document= DocumentHelper.parseText(xml);OutputFormat outputFormat=OutputFormat.createPrettyPrint();outputFormat.setEncoding("UTF-8");StringWriter stringWriter=new StringWriter();//格式化输出XMLWriter xmlWriter=new XMLWriter(stringWriter,outputFormat);xmlWriter.write(document);return stringWriter.toString();}public static void main(String[] args) throws Exception {SendSynyiPatientCardAdd send=new SendSynyiPatientCardAdd();StringBuffer sbf = new StringBuffer();BufferedReader bufferedReader=new BufferedReader(new FileReader("D:\\MAVEN\\tx_boot\\springboot_first\\src\\InhospitalRegistrationUpdate.xml"));String xml="";while ( (xml=(bufferedReader.readLine()))!=null){sbf.append(xml);}String isxml = formatXml(sbf.toString());if(isxml!="false"){String st = send.sendPatientAdd("InhospitalRegistrationUpdate", "HIS", "HIS", isxml);String responseXml = formatXml(st);System.out.println("Response:"+"\r\n"+responseXml);}return;}}
1.结尾
总之,通过这个简单的案例展示,主要是为了记录下,调用第三方的提供的web服务,当第三方提供web服务后,我们可以将这个服地址(http://localhost:22002/services/HIS?wsdl)。放在浏览器打开,需要关注 名称空间名称 、方法名称 、以及需要传入的参数。已经参数类型,通常都是string.
通过java调用webservice服务详细案例一相关推荐
- 解决 -- java 调用webservice 服务端收到参数为null
前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家.点击跳转到教程. 我的客户端和服务端都写的很简单,只是调用服务的时候, 服务端得不到参数,后来发现只改一个地方就可以了 ...
- java对接webservice服务实现推送
[背景] 前不久接到一个任务需要将我们平台的内容推送到第三方的一个webService服务中,我们平台接口使用java来做的,所以需要通过java调用webService服务实现推送效果,不多说直接上 ...
- java工程webservice的应用案例
在java项目中使用webservice 今天学习webservice,主要参考了网络上的一些文章. 1.关于原理的介绍:个人认为这篇文章写得不错了,戳这里. 2.关于demo的编写:个人认为这篇文章 ...
- java调用WebService(客户端)
java调用WebService(客户端) 看下了网上大部分都是写java来编写WS服务端,写了下JAVA的调用端. WebService可以有Get. Post.Soap.Document四种方式调 ...
- Axis2调用WebService服务的3种方式(rpc调用不好用)
第一,RPC方式,不生成客户端代码,引入相应的axis2的jar包(不好用) 注意:暂时没有成功调用,没有参数传递时远程调用成功,当有参数传递时远程调用失败: package com.ming.axi ...
- java调用接口速度慢,Java 调用 webservice 接口,为什么这么慢
Java 调用 webservice 接口,为什么这么慢,有没有好的优化方案,本人目前改成 http 方式发 soap 消息调用,速度依旧很慢,维持在平均 100ms 下不来. 之前用 cxf 的 J ...
- java调用webservice错误信息
java调用webservice接口报前言内容不可用的错误该怎么解决 org.xml.sax.SAXParseException; lineNumber: 1; columnNumber: 1; Co ...
- Apache CXF生成java代码用java调用Webservice接口
这里写自定义目录标题 使用java调用webservice接口 使用java调用webservice接口 当我们使用java去访问webservice的接口时,有很多种方式,这里我们使用apache ...
- java 调用webservice 接口,并解析返回参数
java 调用webservice 接口,并解析返回参数 1. 设置传参,例如以下格式: // 确定传参格式以及赋值 String reqXml = "<createAppParam& ...
- Python调用WebService服务 查询天气预报
文章目录 问题描述 安装 初试 修复Schema 天气预报封装 参考文献 问题描述 Python调用Webservice服务,如WebXml的免费Web服务中的城市天气预报 安装 使用suds库的分支 ...
最新文章
- Go 变量及基本数据类型3
- HTC Vive会是HTC的下一个增长引擎吗?
- HBase基础和伪分布式安装配置
- 基于JAVA+SpringMVC+Mybatis+MYSQL的办公用品销售平台进销存系统
- SQL—— Create table as select 与 使用select查询结果创建新表
- 命令行运行命令时报错You don#39;t have write permissions for the /Library/***
- 利用Python实现一个感知机学习算法
- 通过释放cache内存解决ubuntu死机问题
- android 查看系统字体大小,Android 如何获取系统字体大小
- 软路由安装openwrt
- 关于员工的选用任留,我们谈谈留人
- 计算机主板供电,你也可以看懂主板供电相数和用料情况,轻松选好主板
- nlp对语料进行分类_如何使用nlp对推文进行分类
- 在php中.=什么意思,在算法中mod是什么意思?
- VUE中自定义步骤条
- JRTPLIB使用实例
- 关于框架,到底什么是框架?
- 软件工程之制定计划①(可行性研究报告、项目开发计划)
- 为什么lol进服务器时显示错误,《lol手游》显示authenticationerror怎么解决 异常问题解决方法...
- Learning Typography for Video Editors 学习视频编辑的排版 Lynda课程中文字幕