前言

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服务详细案例一相关推荐

  1. 解决 -- java 调用webservice 服务端收到参数为null

    前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家.点击跳转到教程. 我的客户端和服务端都写的很简单,只是调用服务的时候, 服务端得不到参数,后来发现只改一个地方就可以了 ...

  2. java对接webservice服务实现推送

    [背景] 前不久接到一个任务需要将我们平台的内容推送到第三方的一个webService服务中,我们平台接口使用java来做的,所以需要通过java调用webService服务实现推送效果,不多说直接上 ...

  3. java工程webservice的应用案例

    在java项目中使用webservice 今天学习webservice,主要参考了网络上的一些文章. 1.关于原理的介绍:个人认为这篇文章写得不错了,戳这里. 2.关于demo的编写:个人认为这篇文章 ...

  4. java调用WebService(客户端)

    java调用WebService(客户端) 看下了网上大部分都是写java来编写WS服务端,写了下JAVA的调用端. WebService可以有Get. Post.Soap.Document四种方式调 ...

  5. Axis2调用WebService服务的3种方式(rpc调用不好用)

    第一,RPC方式,不生成客户端代码,引入相应的axis2的jar包(不好用) 注意:暂时没有成功调用,没有参数传递时远程调用成功,当有参数传递时远程调用失败: package com.ming.axi ...

  6. java调用接口速度慢,Java 调用 webservice 接口,为什么这么慢

    Java 调用 webservice 接口,为什么这么慢,有没有好的优化方案,本人目前改成 http 方式发 soap 消息调用,速度依旧很慢,维持在平均 100ms 下不来. 之前用 cxf 的 J ...

  7. java调用webservice错误信息

    java调用webservice接口报前言内容不可用的错误该怎么解决 org.xml.sax.SAXParseException; lineNumber: 1; columnNumber: 1; Co ...

  8. Apache CXF生成java代码用java调用Webservice接口

    这里写自定义目录标题 使用java调用webservice接口 使用java调用webservice接口 当我们使用java去访问webservice的接口时,有很多种方式,这里我们使用apache ...

  9. java 调用webservice 接口,并解析返回参数

    java 调用webservice 接口,并解析返回参数 1. 设置传参,例如以下格式: // 确定传参格式以及赋值 String reqXml = "<createAppParam& ...

  10. Python调用WebService服务 查询天气预报

    文章目录 问题描述 安装 初试 修复Schema 天气预报封装 参考文献 问题描述 Python调用Webservice服务,如WebXml的免费Web服务中的城市天气预报 安装 使用suds库的分支 ...

最新文章

  1. Go 变量及基本数据类型3
  2. HTC Vive会是HTC的下一个增长引擎吗?
  3. HBase基础和伪分布式安装配置
  4. 基于JAVA+SpringMVC+Mybatis+MYSQL的办公用品销售平台进销存系统
  5. SQL—— Create table as select 与 使用select查询结果创建新表
  6. 命令行运行命令时报错You don#39;t have write permissions for the /Library/***
  7. 利用Python实现一个感知机学习算法
  8. 通过释放cache内存解决ubuntu死机问题
  9. android 查看系统字体大小,Android 如何获取系统字体大小
  10. 软路由安装openwrt
  11. 关于员工的选用任留,我们谈谈留人
  12. 计算机主板供电,你也可以看懂主板供电相数和用料情况,轻松选好主板
  13. nlp对语料进行分类_如何使用nlp对推文进行分类
  14. 在php中.=什么意思,在算法中mod是什么意思?
  15. VUE中自定义步骤条
  16. JRTPLIB使用实例
  17. 关于框架,到底什么是框架?
  18. 软件工程之制定计划①(可行性研究报告、项目开发计划)
  19. 为什么lol进服务器时显示错误,《lol手游》显示authenticationerror怎么解决 异常问题解决方法...
  20. Learning Typography for Video Editors 学习视频编辑的排版 Lynda课程中文字幕

热门文章

  1. 交换机cad图例_各种弱电系统的CAD图纸,包含图例、大样图、系统图及原理图等...
  2. STM32F072单片机的低功耗实验/STOP模式低功耗调试
  3. Iphone备份SHSH的方法步骤
  4. 音乐NFT平台的新浪潮,看mozik如何引领数字音乐时代革命
  5. 猪八戒网分析报告_米米米米粒口红_新浪博客
  6. 前端UI框架网址大全----后续会有添加
  7. 如何免费下载IEEE的论文
  8. 基于springboot高校社团管理系统
  9. react 移动端视频、音频、pdf预览
  10. STM32的定时器中断与实例