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 ...
随机推荐
- 微信小程序-ios系统-下拉上拉出现白色,如何处理呢?
这几天做小程序,有些页面都是全屏的背景,在安卓上背景是固定的,而在ios上上拉下拉出现白色,测试说体验不太好,一开始我以为是下拉上拉刷新造成的,关闭了依然是这样.为了体验好点,可以按一下解决: 方式一 ...
- virtualbox测试k8s要注意的情况
想在virtualBox上测试k8s,遇到两个情况要注意.. 第一是flannel和dashborad起不起来,master都无法正常..这时可以想办法把Iptables,selinux,firewa ...
- maven项目的pom.xml文件详解
<project xmlns="http://maven.apache.org/POM/4.0.0 " 2 xmlns:xsi="http://www.w3.org ...
- WebMail
try { WebMail.SmtpServer = "smtp.example.com"; WebMail.SmtpPort = ; WebMail.Enab ...
- Qt发布可能遇到的问题
1.首先要搞清楚动态链接库还是静态链接 本文只涉及动态链接库,就是编译出来的exe文件加上Qt 的必要dll文件. 一般跟别人一样的操作,直接双击 XX.exe,提示缺少什么dll,就去Qt的安装目录 ...
- socket编程的网络协议
"我们在传输数据时,可以只使用(传输层)TCP/IP协议,但是那样的话,如果没有应用层,便无法识别数据内容" TCP/IP只是一个协议栈,就像程序运行一样,必须要实现运行,同时还要 ...
- Aras Innovator 11 sp2 IE客户端设置
在上一篇文章<Aras Innovator 11 sp2 安装>后,服务器算是安装好了,还需要在使用的客户端进行设置才可以正常使用Aras Innovator 该篇为IE设置,还有< ...
- avaScript技术面试时要小心的三个问题
JavaScript是所有现代浏览器的官方语言.同样的,JavaScript面试题出现在各种各样的面试中. 这篇文章不是讲述JavaScript最新的库.日常的开发实践,或是ES6的新功能.当然了,上 ...
- LCA算法笔记
LCA,最近公共祖先,实现有多种不同的方法,在树上的问题中有着广泛的应用,比如说树上的最短路之类. LCA的实现方法有很多,比如RMQ.树链剖分等. 今天来讲其中实现较为简单的三种算法: RMQ+时间 ...
- Django常用内置过滤器
1.add 此过滤器将首先尝试将两个值强制为整数.如果失败,它会尝试将值一起添加.这将工作在一些数据类型(字符串,列表等)和失败在其他人.如果失败,结果将是一个空字符串. {{ value | add ...