使用Java客户端类调用c# WebService和xml rpc server

案例九 java实现RPC通信,即web服务器项目 一、RPC简介RPC,全称为Remote Procedure Call,即远程过程调用,它是一个计算机通信协议。它允许像调用本地服务一样调用远程服务。它可以有不同的实现方式。如RMI(远程方法调用)、Hessian、Http invoker等。另外,RPC是与语言无关的。    RPC示意图如上图所示,假设Computer1在调用sayHi()方法,对于Computer1而言调用sayHi()方法... 阅读详情
<script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script>   本文介绍一个非常实用的Java客户端工具类来调用C# WebServices和apache xml rpc server,这个类的源码是从网上下载的,我在博客网做项目的时候一直使用这个类来调试C# WebServices和MetaWeblog API。顺便在这里也给大家介绍一下C#如何处理此类发送的xml数据。 使用这个类不用安装任何第三方工具,因为采用http的方式发送xml文件,所以你只需要安装好JDK就可以了。执行此类还可以获得WebServices或xml rpc server返回的xml字符流,你可以根据返回的xml数据来进行其他程序处理。通过这种方式实现了Java平台和.NET平台的数据交换和WebService调用。 下面是此类的源代码SOAPClient4XG.java: /** * SOAPClient4XG. Read the SOAP envelope file passed as the second * parameter, pass it to the SOAP endpoint passed as the first parameter, and * print out the SOAP envelope passed as a response. with help from Michael * Brennan 03/09/01 * * * @author Bob DuCharme * @version 1.1 * @param SOAPUrl URL of SOAP Endpoint to send request. * @param xmlFile2Send A file with an XML document of the request. * * 5/23/01 revision: SOAPAction added */ import java.io.*; import java.net.*; public class SOAPClient4XG { public static void main(String[] args) throws Exception { if (args.length < 2) { //小于 System.err.println("Usage: java SOAPClient4XG " "http://soapURL soapEnvelopefile.xml" " [SOAPAction]"); System.err.println("SOAPAction is optional."); System.exit(1); } String SOAPUrl = args[0]; String xmlFile2Send = args[1]; String SOAPAction = ""; if (args.length > 2) //大于 SOAPAction = args[2]; // Create the connection where we're going to send the file. URL url = new URL(SOAPUrl); URLConnection connection = url.openConnection(); HttpURLConnection httpConn = (HttpURLConnection) connection; // Open the input file. After we copy it to a byte array, we can see // how big it is so that we can set the HTTP Cotent-Length // property. (See complete e-mail below for more on this.) FileInputStream fin = new FileInputStream(xmlFile2Send); ByteArrayOutputStream bout = new ByteArrayOutputStream(); // Copy the SOAP file to the open connection. copy(fin,bout); fin.close(); byte[] b = bout.toByteArray(); // Set the appropriate HTTP parameters. httpConn.setRequestProperty( "Content-Length", String.valueOf( b.length ) ); httpConn.setRequestProperty("Content-Type","text/xml; charset=utf-8"); httpConn.setRequestProperty("SOAPAction",SOAPAction); httpConn.setRequestMethod( "POST" ); httpConn.setDoOutput(true); httpConn.setDoInput(true); // Everything's set up; send the XML that was read in to b. OutputStream out = httpConn.getOutputStream(); out.write( b ); out.close(); // Read the response and write it to standard out. InputStreamReader isr = new InputStreamReader(httpConn.getInputStream()); BufferedReader in = new BufferedReader(isr); String inputLine; while ((inputLine = in.readLine()) != null) System.out.println(inputLine); in.close(); } // copy method from From E.R. Harold's book "Java I/O" public static void copy(InputStream in, OutputStream out) throws IOException { // do not allow other threads to read from the // input or write to the output while copying is // taking place synchronized (in) { synchronized (out) { byte[] buffer = new byte[256]; while (true) { int bytesRead = in.read(buffer); if (bytesRead == -1) break; out.write(buffer, 0, bytesRead); } } } } } 编译:javac SOAPClient4XG.java 运行的命令格式: java -classpath . SOAPClient4XG http://localhost/BokeServices/Service1.asmx c:/loginReq.xml http://tempuri.org/UserLoginReq,不过先不要运行上面的命令,先介绍一下命令行的意思,http://localhost/BokeServices/Service1.asmx是C# WebService的地址,c:/loginReq..xml里的内容是调用的WebService方法的xml文件, http://tempuri.org是WebService方法的命名空间,一定要有,否则调用失败,如果你在C# WebServices中使用了方法默认的命名空间的话,就使用http://tempuri.org,否则要与C#中定义的一致,UserLoginReq是C# WebServices的方法名。注意xml文件中的方法名和参数名是与C# WebServices的方法名、参数名是一一对应的(参数顺序是可以颠倒的)。 我先介绍一个简单的例子(c:/loginReq.xml),这个xml文件调用了远程C# WebService的UserLoginReq方法,并带UserAcc(用户名)和UserPwd(口令)两个参数,调用成功后C#会自动返回一个xml格式的SOAP包。 <?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> <UserLoginReq xmlns="http://tempuri.org/"> <UserAcc>baozheng</UserAcc> <UserPwd>mypwd</UserPwd> </UserLoginReq> </soap:Body> </soap:Envelope> 现在看一下C# WebServices的UserLoginReq的方法的定义: public struct UserLoginResp { public string UserAcc; public int Result; } [WebMethod] public UserLoginResp UserLoginReq(string UserAcc,string UserPwd,int ReqFrom) { … } 注意结构UserLoginResp,C# WebServices返回SOAP信息时会自动将UserLoginResp结构转换成xml的格式。 用此类做xml rpc server 的客户端也很简单,下文是一个客户端rpc.xml文件,调用了xml rpc server 端实现的metaWeblog.deletePost方法。 <?xml version="1.0" encoding="utf-8"?> <methodCall> <methodName>metaWeblog.deletePost</methodName> <params> <param><value>appKeyValue</value></param> <param><value>746</value></param> <param><value>baozheng</value></param> <param><value>Hello123</value></param> </params> </methodCall> 调用命令的格式: java -classpath %CLASSPATH%;. SOAPClient4XG. http://192.168.25.97:8080/BokeeXmlRpc/xml-rpc rpc.xml 对比调用WebServices的命令行,可以看出调用xml rpc server的命令行少一个方法名参数。http://192.168.25.97:8080/BokeeXmlRpc/xml-rpc 是提供xml rpc 调用的server端servlet地址,关于如何用apache xml rpc技术实现MetalogAPI的帖子将在近期整理发布。 注:上文的左右尖括号为保证正常发贴替换为全角。 作者:王保政 QQ:19803446 Msn:baozhengw999@hotmail.com Email:baozhengw@netease.com
Web Service核心解析:从SOAP到RESTful的架构演进与实践指南 在分布式系统与微服务架构中,系统间通信是核心技术挑战之一。其核心原理是通过标准化协议实现异构平台间的数据交换与功能调用,从而解决企业应用集成中的互操作性问题。这一技术为构建松耦合、可扩展的分布式系统提供了基础支撑,广泛应用于金融交易、供应链管理、云服务集成等企业级场景。随着技术演进,出现了以XML和SOAP协议为代表的契约优先风格,以及基于HTTP和JSON的RESTful架构风格。本文聚焦Web Service这一经典解决方案,深入剖析其两种主要实现范式——强调严格契约与事务安全的SOAP协议,以及注重轻 阅读详情

相关推荐

Megatron-LM深度解析:万亿参数大模型的3D并行训练之道

训练框架,采用创新的"层内模型并行"设计,通过将Transformer层的计算拆分到多个GPU上并行执行,显著提升训练效率。该系统支持3D并行策略(数据并行、张量并行、流水线并行)和序列并行等新技术,成功应用于训练5300亿参数的MT-NLG模型。相比DeepSpeed、TPU GSPMD等框架,Megatron-LM在NVIDIA GPU上展现出卓越性能,并与TensorRT等工具深度集成,形成从训练到部署的完整解决方案。该项目持续演进,已成为大模型训练的重要基准。

数据与算法架构提升之路专栏 2094

Java调用C#webService接口

转载:https://blog.youkuaiyun.com/hu_zhiting/article/details/78755104 https://max.book118.com/html/2018/1228/7030144004001200.shtm java调用C#webService接口,主要有三种方式:1.HttpClient 2.HttpURLConnection 3.插件生成客户端代码 生成客户...

qq_35300439的博客 3376

【SEW-伺服电机-Profinet-io通讯控制——伺服配置】

SEW-伺服电机-Profinet-io通讯控制——伺服配置一、本次使用配置说明编写经历受国际形式与疫情影响相关资料查询阅读测试验证不易二、伺服配置流程1.基本准备条件2.硬件-电路连接3.设备在线连接4.软件-参数配置5.手动运行测试6.PN-IO自动控制配置8.PLC1200硬件组态9.PLC软件编程10.调试故障分析三、总结四、参考 一、本次使用配置说明编写经历 受国际形式与疫情影响 由于近期受国际形式影响以及全球疫情影响,Siemens等常用产品供货期与供货量严重受限,项目上不得不采取选用其它替代产

qq_39024187的博客 1万+

C#调用webservice实现支持静态调用和动态调用

因为工作经常对接各大平台接口,现在要对接一个第三方平的结算接口。 现在将C#调用java平台的webservices功能实现如下。 效果如下: 完整代码 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Net; using System.IO; using System.Reflection; using System.CodeDom; using Sys

扣丁曼 1555

5G边缘计算:核心网下沉革命

5G核心网与边缘计算的深度融合,通过UPF下沉、本地流量卸载等关键技术,实现了低时延、高效能的分布式计算架构。该技术将数据处理从核心网向边缘节点转移,支持工业控制、车联网、远程医疗等场景的1-10ms超低时延需求。5G核心网的SBA架构和CUPS设计为边缘计算提供了灵活部署基础,SMF、PCF等网元协同确保业务质量与可靠性。

Qinti_mm的博客 1402

C++面试八股文

和静态多态(又称编译期多态,即在系统编译期间就可以确定程序将要执行哪个函数),其中动态多态是通过虚函数实现的,虚函数是类的成员函数,存在存储虚函数指针的表叫做虚函数表,虚函数表是一个存储类成员虚函数的指针,每个指针都指向调用它的地方,当子类调用虚函数时,就会去虚表里面找自己对应的函数指针,从而实现“谁调用、实现谁”从而实现多态。而C++符号表中的符号不是以函数名命名的,称为函数名修饰规则,虽然函数名相同,但是函数参数等其他属性不同,取的符号也不同,所以不会产生查询歧义的问题,使得函数可以重载。

qq_46676829的博客 906

java调用C#提供的WebService服务

java调用C#提供的WebService服务第一步:通过jdk提供的原生工具wsimport(位于jdk安装目录下得bin目录)场景1:能够通过网络直接访问wsdl文件场景2:不能够通过网络直接访问wsdl文件第二步:将生成的代码拷贝到项目第三步:webService接口的调用总结: 第一步:通过jdk提供的原生工具wsimport(位于jdk安装目录下得bin目录) 场景1:能够通过网络直接访问wsdl文件 wsimport -keep -d E:\generated\d -s E:\generated

weixin_43090567的博客 1126

WinCC 7.5 读取 SQL server2016 中的表格数据

环境 win10 SQL Server 2016 WinCC V7.5 SP2 1 安装SQL Server 2016 2 选择服务器名称 .\WINCC 3 建数据库

skr? 7143

知识图谱开发实战:搭建上市公司知识图谱(二)

搭建上市公司知识图谱(二)学习目标1. 获取上市公司公开数据1.1 获取上市公司列表与行业信息1.2 代码展示2. 从网站爬取上市公司网页并存储为 HTML文件2.1 准备环境2.2 爬取上市公司公开信息3. 解析HTML文件,获取高管信息并存储为 csv 文件4. 设计知识图谱数据库4.1 实体4.2 关系4.3 属性4.4 特殊4.5 代码5. 知识图谱数据库查询实战5.1 实战:按照neo4j的数据格式,转换CSV文件5.2 实战:使用neo4j-admin 导入数据5.3 实战:使用neo4j-b

全网粉丝30W+,优快云、稀土掘金人工智能领域签约作者,人工智能、大模型、Python 爬虫,商务合作,请私信沟通。 2096

C# 工业视觉性能极致优化:多线程推理池 + 对象复用 + 批量检测,速度提升 10 倍实战

set;} // 输入图像set;} // 异步返回结果set;} // 用于监控延迟性能优化不是魔法,而是对资源生命周期的精细管理和对硬件特性的充分利用。多线程池解决了 CPU/GPU 闲置问题。对象池解决了 GC 停顿问题。零拷贝解决了总线带宽瓶颈。严格的 Dispose解决了内存泄漏问题。这套架构已在多个高速锂电、3C 电子检测产线落地,轻松应对 200ms 甚至 50ms 的严苛节拍。记住,在工业领域,稳定性与速度同等重要。

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 308

2025年7月12日全国青少年信息素养大赛图形化(Scratch)编程小学低年级组复赛真题+答案解析

2025年7月12日全国青少年信息素养大赛图形化(Scratch)编程小学低年级组复赛真题+答案解析

伶俐角少儿编程 712

RPC和WebService的区别

RPC是Remote Procedure Calling,远程过程调用的缩写。并不是“远程进程调用”——Remote Process Calling。RPC总的来说是一个Client/Server的结构,提供服务的一方称为Server,消费服务的一方称为Client。  下图是本地过程调用,所有的过程都在本地服务器上,依次调用即可。 下图则是所谓的远程过程调用,需要在Client和

jiangshubian的博客 3226

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

什么是Web Server

WebService到底是什么? 一言以蔽之:WebService是一种跨编程语言和跨操作系统平台的远程调用技术。 WebService平台技术 XML+XSD,SOAP和WSDL就是构成WebService平台的三大技术。 XML+XSD: WebService采用HTTP协议传输数据,采用XML格式封装数据(即XML中说明调用远程服务对象的哪个方法,传递的参数是什么,以...

weixin_33738982的博客 271

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

Web Service接口

Web Service接口 1.1接口方式说明和优点 在笔者的开发生涯中,当作为接口提供商给第三方提供接口时,以及作为客户端去调用第三方提供的接口时,大部分时候都是使用Web Service接口,Web Service作为接口使用广泛的原因,与它的特点息息相关。 Web Service的主要目标是跨平台的可互操作性,为了实现这一目标,Web Service完全基于XML(可扩展标记语言...

Lam's IT Story 231

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

Python 学习 ---> 模块、pypi ( 模块库 )、添加模块路径

什么是 模块 在 Python 中,一个.py文件就是一个模块(Module)。模块的名字就是文件的名字。在模块内部,通过全局变量__name__可以获取模块名(即字符串) 模块作用 为了实现代码的复用,通常会把一些其他程序中重用的代码拿出来单独放在一个程序文件中,

freeking101的博客 3486

软考-系统分析师-备考笔记

根据学习视频和一些资料整理的软考系统分析师考试笔记,2025年下半年通关

提子同学是我 1027

CnOpenData 线上招聘网站信息数据

CnOpenData线上招聘网站信息数据库是一个覆盖中国主流招聘平台、时间跨度长、更新频率高的劳动力市场需求侧大数据集合。本数据库汇集了,为学术界和业界提供了一扇实时观察中国劳动力市场动态的窗口。

CnOpenData_wj的博客 2651

OPC UA 地址空间导入实践|XML 与 CSV 两条路径

部署OPC UA服务器时,核心瓶颈在于数据注入——地址空间结构设计与时间序列模拟。XML定义节点结构,需注意命名空间索引(应基于URI而非运行编号)及父子关系双向声明,改动后必须重启生效;CSV注入时序,按SourceTimestamp分组批量写入,建议使用nsu=URI;s=名称格式避免索引错位。推荐使用Prosys仿真服务器,结合UaModeler建模,实现高效、稳定的仿真部署。

MotroEngineer的博客 278

Windows 下 Cordova iOS 开发,配置 config.xml、插件、真机调试全流程

cordova build ios 在 Windows 上用不了?cordova platform add ios 生成工程后,构建、安装和调试交给 KXBuild。本文讲 Cordova iOS 打包全流程:config.xml 配 Bundle ID、版本号和权限说明,插件带 CocoaPods 依赖就 pod install,体检后连 iPhone 按 F5,网页代码用 vConsole/Eruda、原生代码在 VS Code 断点,打出可上架 ipa,Ionic 工程同样适用。

2501_91590906的博客 162
上一篇: 澄清 Java 的接口与继承机制
下一篇: Java初学者需掌握的30个基本概念
java169
博客等级 码龄19年 27粉丝 2568原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值