调用http://10.50.0.105:4968/daws/services/DAService?wsdl 接口 java 包含jar包

时间: 2023-10-11 10:09:15 浏览: 186

要调用 SOAP 接口,你需要使用 Java 的 SOAP 客户端库。其中比较常用的有 Apache Axis 和 Apache CXF。在使用之前,你需要先下载相关的 jar 包,然后将其添加到你的项目中。

对于 Apache Axis,你可以从官网上下载最新版本的二进制包。下载后,解压缩得到一个 axis-x.x 目录。里面包含了一些 jar 包,其中最重要的是 axis.jar 和 commons-discovery.jar。你需要将这些 jar 包添加到你的项目中,并将其设置为 classpath。

对于 Apache CXF,你可以从官网上下载最新版本的二进制包。下载后,解压缩得到一个 apache-cxf-x.x.x 目录。里面包含了一些 jar 包,其中最重要的是 cxf-core.jar 和 cxf-rt-bindings-soap.jar。你需要将这些 jar 包添加到你的项目中,并将其设置为 classpath。

完成 jar 包的准备工作后,你就可以开始编写 Java 代码来调用 SOAP 接口了。具体的步骤如下:

  1. 创建一个 Service 对象。Service 对象用于访问 WSDL 文件,并从中获取相关的服务信息。
import javax.xml.namespace.QName;
import javax.xml.ws.Service;
import java.net.URL;

URL wsdlUrl = new URL("http://10.50.0.105:4968/daws/services/DAService?wsdl");
QName serviceName = new QName("http://example.com/wsdl", "DAService");
Service service = Service.create(wsdlUrl, serviceName);
  1. 创建一个 Dispatch 对象。Dispatch 对象用于发送 SOAP 请求,并接收 SOAP 响应。Dispatch 对象有两种类型:Message 和 Payload。前者用于处理 SOAP 消息,后者用于处理 SOAP 负载。
import javax.xml.bind.JAXBContext;
import javax.xml.bind.JAXBElement;
import javax.xml.bind.Unmarshaller;
import javax.xml.namespace.QName;
import javax.xml.soap.MessageFactory;
import javax.xml.soap.SOAPConstants;
import javax.xml.soap.SOAPMessage;
import javax.xml.transform.dom.DOMSource;
import javax.xml.ws.Dispatch;
import javax.xml.ws.Service;
import javax.xml.ws.Service.Mode;
import javax.xml.ws.handler.MessageContext;
import javax.xml.ws.http.HTTPBinding;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.InputStream;
import java.util.HashMap;
import java.util.Map;

QName portName = new QName("http://example.com/wsdl", "DAServicePort");
Dispatch<SOAPMessage> dispatch = service.createDispatch(portName, SOAPMessage.class, Mode.MESSAGE);

MessageFactory messageFactory = MessageFactory.newInstance(SOAPConstants.SOAP_1_2_PROTOCOL);
SOAPMessage request = messageFactory.createMessage();
request.setProperty(MessageContext.HTTP_REQUEST_HEADERS, new HashMap<String, Object>());
request.setProperty(MessageContext.HTTP_RESPONSE_HEADERS, new HashMap<String, Object>());
request.setProperty(MessageContext.HTTP_RESPONSE_CODE, 200);

ByteArrayOutputStream out = new ByteArrayOutputStream();
request.writeTo(out);
InputStream in = new ByteArrayInputStream(out.toByteArray());
SOAPMessage soapMessage = messageFactory.createMessage(null, in);
  1. 发送 SOAP 请求,并接收 SOAP 响应。在发送请求之前,你需要根据 WSDL 文件中定义的 SOAP 操作,构造一个合法的 SOAP 消息。在接收响应之后,你需要对响应进行解析,并提取出其中的有效数据。
import javax.xml.bind.JAXBContext;
import javax.xml.bind.JAXBElement;
import javax.xml.bind.Unmarshaller;
import javax.xml.namespace.QName;
import javax.xml.soap.MessageFactory;
import javax.xml.soap.SOAPConstants;
import javax.xml.soap.SOAPMessage;
import javax.xml.transform.dom.DOMSource;
import javax.xml.ws.Dispatch;
import javax.xml.ws.Service;
import javax.xml.ws.Service.Mode;
import javax.xml.ws.handler.MessageContext;
import javax.xml.ws.http.HTTPBinding;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.InputStream;
import java.util.HashMap;
import java.util.Map;

// 构造 SOAP 消息
QName operationName = new QName("http://example.com/wsdl", "getWeather");
JAXBContext jaxbContext = JAXBContext.newInstance(GetWeather.class);
Marshaller marshaller = jaxbContext.createMarshaller();
GetWeather request = new GetWeather();
request.setCity("Beijing");
JAXBElement<GetWeather> payload = new JAXBElement<GetWeather>(operationName, GetWeather.class, request);
marshaller.marshal(payload, soapMessage.getSOAPBody());

// 发送 SOAP 请求,并接收 SOAP 响应
SOAPMessage response = dispatch.invoke(soapMessage);
Unmarshaller unmarshaller = jaxbContext.createUnmarshaller();
DOMSource source = new DOMSource(response.getSOAPBody().getFirstChild());
JAXBElement<GetWeatherResponse> result = unmarshaller.unmarshal(source, GetWeatherResponse.class);
GetWeatherResponse weatherResponse = result.getValue();
System.out.println(weatherResponse.getWeather());

以上就是调用 SOAP 接口的基本步骤。需要注意的是,具体实现可能会有所不同,具体要根据 WSDL 文件的内容来进行调整。

向AI提问 loading 发送消息图标

相关推荐

大家在看

recommend-type

MSATA源文件_rezip_rezip1.zip

MSATA(Mini-SATA)是一种基于SATA接口的微型存储接口,主要应用于笔记本电脑、小型设备和嵌入式系统中,以提供高速的数据传输能力。本压缩包包含的"MSATA源工程文件"是设计MSATA接口硬件时的重要参考资料,包括了原理图、PCB布局以及BOM(Bill of Materials)清单。 一、原理图 原理图是电子电路设计的基础,它清晰地展示了各个元器件之间的连接关系和工作原理。在MSATA源工程文件中,原理图通常会展示以下关键部分: 1. MSATA接口:这是连接到主控器的物理接口,包括SATA数据线和电源线,通常有7根数据线和2根电源线。 2. 主控器:处理SATA协议并控制数据传输的芯片,可能集成在主板上或作为一个独立的模块。 3. 电源管理:包括电源稳压器和去耦电容,确保为MSATA设备提供稳定、纯净的电源。 4. 时钟发生器:为SATA接口提供精确的时钟信号。 5. 信号调理电路:包括电平转换器,可能需要将PCIe或USB接口的电平转换为SATA接口兼容的电平。 6. ESD保护:防止静电放电对电路造成损害的保护电路。 7. 其他辅助电路:如LED指示灯、控制信号等。 二、PCB布局 PCB(Printed Circuit Board)布局是将原理图中的元器件实际布置在电路板上的过程,涉及布线、信号完整性和热管理等多方面考虑。MSATA源文件的PCB布局应遵循以下原则: 1. 布局紧凑:由于MSATA接口的尺寸限制,PCB设计必须尽可能小巧。 2. 信号完整性:确保数据线的阻抗匹配,避免信号反射和干扰,通常采用差分对进行数据传输。 3. 电源和地平面:良好的电源和地平面设计可以提高信号质量,降低噪声。 4. 热设计:考虑到主控器和其他高功耗元件的散热,可能需要添加散热片或设计散热通孔。 5. EMI/EMC合规:减少电磁辐射和提高抗干扰能力,满足相关标准要求。 三、BOM清单 BOM清单是列出所有需要用到的元器件及其数量的表格,对于生产和采购至关重要。MSATA源文件的BOM清单应包括: 1. 具体的元器件型号:如主控器、电源管理芯片、电容、电阻、电感、连接器等。 2. 数量:每个元器件需要的数量。 3. 元器件供应商:提供元器件的厂家或分销商信息。 4. 元器件规格:包括封装类型、电气参数等。 5. 其他信息:如物料状态(如是否已采购、库存情况等)。 通过这些文件,硬件工程师可以理解和复现MSATA接口的设计,同时也可以用于教学、学习和改进现有设计。在实际应用中,还需要结合相关SATA规范和标准,确保设计的兼容性和可靠性。
recommend-type

Java17新特性详解含示例代码(值得珍藏)

Java17新特性详解含示例代码(值得珍藏)
recommend-type

UD18415B_海康威视信息发布终端_快速入门指南_V1.1_20200302.pdf

仅供学习方便使用,海康威视信息发布盒配置教程
recommend-type

MAX 10 FPGA模数转换器用户指南

介绍了Altera的FPGA: MAX10模数转换的用法,包括如何设计电路,注意什么等等
recommend-type

C#线上考试系统源码.zip

C#线上考试系统源码.zip

最新推荐

recommend-type

龙芯1B:rt-thread操作系统相关实验

buct计算机系统综合设计课设
recommend-type

"半桥LLC谐振变换器:开环、闭环仿真设计与参数详解报告-含32页说明文档与Simulink模型",半桥LLC谐振变器开环+闭环仿真设计资料 附带一份32页配套说明文档详细参数设计、原理说明、仿真分

"半桥LLC谐振变换器:开环、闭环仿真设计与参数详解报告——含32页说明文档与Simulink模型",半桥LLC谐振变器开环+闭环仿真设计资料 附带一份32页配套说明文档详细参数设计、原理说明、仿真分析 开环、闭环、闭环+软启动三个Simulink仿真模型, 附带了配套设计说明报告,给出了谐振槽谐振元件参数的设计步骤,并对参数进行了完整设计。 可以参考说明文档设计不同功率等级的LLC谐振变器 ,半桥LLC谐振变换器; 开环仿真设计; 闭环仿真设计; 软启动仿真模型; 设计说明报告; 谐振槽谐振元件参数设计步骤。,"LLC谐振变换器:开环闭环仿真设计资料及详细参数说明"
recommend-type

证书_00008030-001079D21A53402E.zip

证书_00008030-001079D21A53402E.zip
recommend-type

深入探索Comsol SOFC:固体氧化物燃料电池的仿真与性能分析(涉及温度场、气体分布及曲线表现),Comsol sofc固体氧化物燃料电池仿真(温度场分布,气体分布,极化曲线,性能曲线) ,Com

深入探索Comsol SOFC:固体氧化物燃料电池的仿真与性能分析(涉及温度场、气体分布及曲线表现),Comsol sofc固体氧化物燃料电池仿真(温度场分布,气体分布,极化曲线,性能曲线) ,Comsol; SOFC; 固体氧化物燃料电池; 仿真; 温度场分布; 气体分布; 极化曲线; 性能曲线,Comsol SOFC仿真:温度场与气体分布分析的极化性能曲线
recommend-type

学生竞赛管理系统 免费JAVA毕业设计 2024成品源码+论文+录屏+启动教程.zip

学生竞赛管理系统 免费JAVA毕业设计 2024成品源码+论文+录屏+启动教程 启动教程:https://www.bilibili.com/video/BV1jKDjYrEz1 项目讲解视频:https://www.bilibili.com/video/BV1Tb421n72S 二次开发教程:https://www.bilibili.com/video/BV18i421i7Dx
recommend-type

掌握销售代理合同三要点:法律保障与参考资料

销售代理合同是企业间在销售活动中为了明确相互间权利义务关系而签订的一种协议。它规定了代理人的权利和义务、销售产品或服务的范围、代理期限、代理费用、违约责任等内容。签订销售代理合同可以有效保障交易双方的权益,降低交易风险。以下是销售代理合同中通常包含的关键知识点: 1. 合同当事人的基本信息:合同中应明确列出代理方和委托方的名称、地址、联系方式等基本信息,这为合同的法律效力提供了基础保障。 2. 合同的标的:即代理销售的产品或服务的描述,包括产品名称、规格、型号、质量标准等。 3. 代理权限和范围:合同中应当明确代理方的权限范围,比如是否享有独家代理权、是否可以销售竞争性产品等。 4. 销售指标和任务:委托方可能会设定销售指标和任务,以此作为对代理方业绩考核的依据。 5. 代理期限:合同的有效期,即代理销售关系从何时开始到何时结束。 6. 价格和费用:包括代理产品的销售价格、折扣政策、代理费用的支付方式等。 7. 品牌宣传和市场推广:规定双方在品牌宣传、市场推广等方面的分工与责任。 8. 交货和运输:明确产品交付的时间、地点、方式以及运输费用的承担方。 9. 付款条件和结算方式:包括付款期限、付款方式、发票开具等。 10. 保密条款:双方应约定对商业秘密的保护责任,防止商业机密泄露。 11. 违约责任:详细规定违约情形及其法律后果,如违约金、赔偿范围等。 12. 解除和终止合同的条件:在什么情况下可以提前解除或终止合同,以及解除或终止合同后相关权利义务的处理。 13. 争议解决:规定合同发生争议时的解决途径,如协商、调解、仲裁或诉讼等。 14. 法律适用与合同生效条件:明确合同适用的法律和合同生效的条件或时间。 销售代理合同(三)作为一个参考模板,可能包含以上所提到的全部或部分要点,使用者可以根据自身实际情况和需要进行参考和调整。值得一提的是,合同法是合同订立和履行的法律规范,签订合同时,双方都应当遵循合同法的相关规定,确保合同的合法性和有效性。此外,使用模板作为起点时,切记要针对具体情况进行审查和修改,避免出现不符合实际条款或潜在的法律风险。由于具体合同内容未能提供,所以上述内容仅供参考。在实际应用中,应结合专业法律顾问的意见来制定合同。
recommend-type

【Hue 4.10.0速成宝典】:新手也能轻松搭建Hadoop UI界面

# 摘要 本文详细介绍Hue 4.10.0版本的功能、界面组件、操作方法及环境搭建。深入探讨Hue与Hadoop生态系统的交互,包括其与HDFS、YARN和MapReduce的集成。文章还涉及Hue的定制化、集成、性能调优及故障排除策略,并通过实际应用案例展示Hue在数据管理和大数据处理流程中的作用。最后,本文展望Hue的未来发展趋势和社区贡献的可能性。通过这些内容,
recommend-type

用matlab编写自己定义的实指数序列的通用产生函数

在MATLAB中,你可以创建一个自定义函数来生成任意长度的实数指数序列。首先,你需要定义一个名为`custom_exponential_sequence`的M文件,内容如下: ```Matlab function seq = custom_exponential_sequence(n, base, exponent) % 定义一个生成实数指数序列的函数 % 输入参数: % n - 指数的基础值 % exponent - 指数 % 验证输入是否合法 if nargin < 3 || ~isnumeric(base) || ~isscalar(base) || base <= 0 ||
recommend-type

Dlib与OpenCV结合实现人脸表情动态识别技术

在深入介绍与理解“人脸表情识别,开心,中性,悲伤动态识别”相关的知识点之前,我们首先要对机器学习领域内的表情识别有一个基础性的认识。表情识别,作为计算机视觉领域中的一个分支,主要研究如何利用计算机技术自动识别和处理人脸表情信息。它在人机交互、情感计算、安全监控等多个领域都有广泛的应用。 首先,Dlib和OpenCV是目前在图像处理和计算机视觉方面应用最广泛的两个库。Dlib是一个高级的机器学习库,它内置了很多训练好的模型,包括人脸识别和面部特征点定位等。OpenCV是一个开源的计算机视觉和机器学习软件库,提供了大量图像处理和分析的函数。使用Dlib和OpenCV结合进行人脸表情识别,能够利用Dlib提供的面部特征定位功能来辅助OpenCV进行表情识别的图像处理和分析。 接下来,我们来具体分析一下本项目中涉及的关键知识点: 1. 人脸检测和特征点定位:在表情识别之前,需要准确地检测图像中的人脸,并定位人脸的关键特征点。Dlib库中的预训练模型可以提供快速准确的人脸检测和特征点定位功能。通常采用的是HOG+SVM方法以及深度学习的人脸检测模型。 2. 表情分类:将检测到的面部特征点作为输入,通过机器学习算法进行表情的分类。分类的目的是将人脸表情分为不同的类别,如开心、中性和悲伤等。在这里,可以利用Dlib提供的机器学习接口或者结合OpenCV实现的深度学习方法。 3. 动态表情识别:表情不仅仅是静态的,人脸表情在真实场景中是动态变化的。要准确地识别动态表情,需要对时间序列的面部特征进行分析。这通常涉及到构建基于时间的特征序列,并使用递归神经网络(RNN)或其他序列学习模型来处理表情随时间的变化。 4. 模型训练与优化:对于机器学习模型,训练数据的质量和数量对模型性能有着决定性的影响。针对表情识别,需要大量带有标注表情标签的数据集。常用的数据集包括CK+, JAFFE, Oulu-CASIA等。训练模型时,还需要使用适当的评估指标,如准确率、召回率、F1分数等,来对模型进行评估和优化。 5. 实时处理和鲁棒性:在实际应用中,表情识别系统需要能够实时处理视频流中的表情,并且对环境变化、光线变化、遮挡等情况有较强的鲁棒性。这需要设计相应的算法来适应这些变化,并保证表情识别的准确性和实时性。 根据上述知识点,我们可以归纳出,“人脸表情识别,开心,中性,悲伤动态识别”这个项目可能会涉及以下步骤: - 数据采集:收集包含不同表情的人脸图像,包括视频或图片。 - 数据预处理:对采集的数据进行裁剪、归一化等预处理操作。 - 特征提取:使用Dlib库提取人脸图像中的特征点。 - 模型建立:利用提取的特征训练机器学习模型,或使用Dlib内置的表情识别模型。 - 动态序列处理:针对视频序列数据,构建时间序列模型,进行表情识别。 - 结果评估:用测试集对模型进行评估,根据评估结果调整模型参数。 - 实用性优化:优化算法和模型,确保系统能够实时准确地进行表情识别。 最后,“表情识别打包”这个标签表示该项目已经是一个完整的系统,所有必要的代码、模型、和文档都被整理打包,便于在不同的平台和环境中部署使用。 在实际应用中,表情识别技术的准确性和鲁棒性仍然面临一些挑战,比如表情的细微差异识别、不同人群(如不同年龄、性别、种族)的表情识别泛化问题等,这些都是未来需要进一步研究和解决的问题。
recommend-type

Altium Designer 10新特性深度解析:如何最大化新功能的潜力

# 摘要 Altium Designer 10作为电子设计自动化工具的最新版本,引入了一系列创新功能以提升用户体验、设计效率和协作能力。本文首先概述了新版本中的主要功能更新,包括界面与用户体验的改进、原理图与PCB设计工具的创新、信号与电源完整性分析的强化、团队协作与数据管理的提升,以及自动化和集成能力的扩展。进一步,通过案例研究,本文展示了如何应用这些新功能来提高设计流程的效率
手机看
程序员都在用的中文IT技术交流社区

程序员都在用的中文IT技术交流社区

专业的中文 IT 技术社区,与千万技术人共成长

专业的中文 IT 技术社区,与千万技术人共成长

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

客服 返回
顶部