XmlRpc with C#/Java【转】
最近看了几个项目都是用xmlrpc协作完成的,就做了几个测试客户端和服务器端和大家一起分享。希望能对入门的同学有帮助
关于xmlrpc的介绍和规范参考http://www.xml-rpc.net/ 下面我就直奔主题举几个例子了
c#服务端
首先在VS中添加引用CookComputing.XmlRpc.dll
功能:仅仅返回一个拼接后的字符串
using System;
using CookComputing.XmlRpc;
namespace xmlrpcServerTest
{
public class server : XmlRpcService
{
[XmlRpcMethod("server.hello")] //即可写方法注解,也可写类注解,此为方法注解
public string hello(string param)
{
return "hello world "+param;
}
}
}
在配置文件中加入如下配置(归属到<system.web>节点)
<httpHandlers>
<add verb="*" path="server.aspx" type="xmlrpcServerTest.server, xmlrpcServerTest" />
</httpHandlers> 实现 web调用到应用程序类的映射
c#客户端
using System;
using CookComputing.XmlRpc;
namespace xmlrpcClientTest
{
/// <summary>
/// Summary description for Class1.
/// </summary>
public interface client
{
[XmlRpcMethod("server.hello")]
string hello(string param);
}
class xmlrpcClientTest
{
/// <summary>
/// The main entry point for the application.
/// </summary>
[STAThread]
static void Main(string[] args)
{
//
// TODO: Add code to start application here
//
client iclient;
XmlRpcClientProtocol protocol;
iclient = (client)XmlRpcProxyGen.Create(typeof(client));
protocol = (XmlRpcClientProtocol)iclient;
protocol.Url = "http://localhost/xmlrpcServerTest/server.aspx";
protocol.KeepAlive = false;
string ret = iclient.hello("test"); //调用
Console.WriteLine(ret);
Console.ReadLine();
}
}
}
其中客户端的web方法名称即[ ]中的名称必须和服务端相同,否则会抛异常。
再看java:
java服务端:
首先在你所使用的IDE中导入xmlrpc组件的包
rpc代码如下、web处理部分可以用servlet或jsp来调用这个类、封装到一个方法中
//传入request和response内置对象
.........
public class server {
public void invoke() {
XmlRpcServer xmlrpc = new XmlRpcServer();
xmlrpc.addHandler("server", new serverImpl());
byte[] result = xmlrpc.execute(request.getInputStream());
..........
}
}
..........
public class serverImpl{
String function(String paramHead,String paramTail){
return paramHead+paramTail;
}
}
serverImpl为一个普通的java类,可以用来处理业务逻辑,“server
java客户端:
try{
XmlRpcClient client = new XmlRpcClient(http://localhost:8080/project/servProvider);
//project是你的工程名字
//servProvider可以是servlet或jsp
String[] param = {"hello ","world"};
Vector param_vector = new Vector();
param_vector.addElement(param[0]);
param_vector.addElement(param[1]);
String res ="sdf";
res = (String)client.execute("server.function",param_vector);
System.out.println(res);
}
catch(MalformedURLException e)
{
System.out.println(e.toString());
}
catch (IOException e) {
System.out.println(e.toString());
}
catch (XmlRpcException e) {
System.out.println(e.toString());
}
完毕,这就是很有用的xmlrpc
”可以理解为serverImpl的一个代理或标号,便于服务器端定向
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/djseaside/archive/2008/08/20/2803182.aspx
XmlRpc with C#/Java【转】的更多相关文章
- XML-RPC笔记
1.什么是XML-RPC RPC(Remote Procedure Call)就是相当于提供了一种"远程接口"来供外部系统调用,常用于不同平台.不同架构的系统之间互相调用. XML ...
- (转载)Linux 套接字编程中的 5 个隐患
在 4.2 BSD UNIX® 操作系统中首次引入,Sockets API 现在是任何操作系统的标准特性.事实上,很难找到一种不支持 Sockets API 的现代语言.该 API 相当简单,但新的开 ...
- 转 MetaWeblog API 编写
如今,许多人都熟悉个人和公司或业界主办的博客.后者明显成为了传统公司和行业网站的下一代新兴产物.博客的内容涉及从简洁的特制产品公告和公共关系到实用且深刻的主题探索,这些主题可能对公司的产品或行业的未来 ...
- JMeter实战(一) 体系结构
此为开篇,介绍JMeter的组成结构,阅读后对JMeter形成整体认知和初步印象. 为了便于后续讲解,先明确下2个术语. 元件:如HTTP请求.事务控制器.响应断言,就是一个元件. 组件:如逻辑控制器 ...
- 12张图打开JMeter体系结构全局视角
JMeter是Java技术栈工具,在软件测试领域应用非常广泛,无论是性能测试还是接口测试,技术都很成熟和稳定.它有一个突出特点:开源,适合做二次开发,以阿里为代表的Java技术栈公司都对它青睐有加.在 ...
- Spark案例分析
一.需求:计算网页访问量前三名 import org.apache.spark.rdd.RDD import org.apache.spark.{SparkConf, SparkContext} /* ...
- bugzilla4的xmlrpc接口api调用实现分享: xmlrpc + https + cookies + httpclient +bugzilla + java实现加密通信下的xmlrpc接口调用并解决登陆保持会话功能
xmlrpc . https . cookies . httpclient.bugzilla . java实现加密通信下的xmlrpc接口调用并解决登陆保持会话功能,网上针对bugzilla的实现很 ...
- java实现xml-rpc客户端和服务端
客户端代码: package test_xmlrpc.test; import java.net.URL;import java.util.ArrayList;import java.util.Lis ...
- java XML-RPC
1.XML-RPC简介 xml rpc是使用http协议做为传输协议的rpc机制,使用xml文本的方式传输命令和数据.一个rpc系统,必然包括2个部分:1.rpc client,用来向rpc serv ...
随机推荐
- 《java并发编程实战》读书笔记11--构建自定义的同步工具,条件队列,Condition,AQS
第14章 构建自定义的同步工具 本章将介绍实现状态依赖性的各种选择,以及在使用平台提供的状态依赖机制时需要遵守的各项规则. 14.1 状态依赖性的管理 对于并发对象上依赖状态的方法,虽然有时候在前提条 ...
- 提高C#编程水平的50个要诀
一篇旧时的文章,看后觉得还可以,特别贴出来. 提高C#编程水平的50个要点: .总是用属性 (Property) 来代替可访问的数据成员 .在 readonly 和 const 之间,优先使用 rea ...
- OpenCL学习笔记(一):摩尔定律,异构计算与OpenCL初印象
欢迎转载,转载请注明:本文出自Bin的专栏blog.csdn.net/xbinworld. 技术交流QQ群:433250724,欢迎对算法.技术.应用感兴趣的同学加入. 关于摩尔定律: 摩尔定律19 ...
- RedHat7/Centos7 搭建NFS服务器
https://blog.csdn.net/u012124304/article/details/81001068 客户端和服务器都得安装nfs-utils
- 基于 Docker 的 DevOps 搭建
一直对 DevOps 感兴趣,最近心血来潮,搭乘 Docker 搞一搞,Let‘s Go !!! 1.拉取 GitLab docker pull gitlab/gitlab-ce 2.Run Git ...
- NET牛人应该知道些什么?(瞬间觉得自己弱爆了)
任何一个使用.NET的人 描述线程与进程的区别? 什么是Windows服务,它的生命周期与标准的EXE程序有什么不同 Windows上的单个进程所能访问的最大内存量是多少?它与系统的最大虚拟内存一样吗 ...
- mac安装jdk1.8
一. http://www.oracle.com/technetwork/java/javase/downloads/index.html 去jdk官网下载 二.安装 一路傻瓜式安装,下一步下一步 三 ...
- hdu 多校第一场
1001 思路:打表可以发现只有3|n 和 4|n 的情况有解,判一下就好啦. #include<bits/stdc++.h> #define LL long long #define f ...
- 17-7-25-js记录
先说明下为什么说好每天一更,周五周六周日都没有更新.因为在周五的时候,上司主动找我谈了转正后的工资4-4.5K.本来想好是6K的,后来打听了一圈公司的小伙伴,都是5-5.5,我就把自己定到了5K.万万 ...
- 合并区间(LintCode)
合并区间 给出若干闭合区间,合并所有重叠的部分. 样例 给出的区间列表 => 合并后的区间列表: [ [ [1, 3], [1, 6], [2, 6], => [8, 10], [8, 1 ...