最近与xmlrpc这东西打交道,因为之前没用过,在这之前也一直没听说过这个名词,所以也不知道怎么调用。
后来查了一下资料,分别用C# 和 Loadrunner的web(http/html) 都实现了调用操作。
废话少说,下面就先来说一下C#是如何实现的。(当然其实语言也可以读取,这里只说一下我用到的,其实的就不作研究了。)
1. C#实现方式
需要去下载CookComputing.XmlRpcV2.dll这个dll的支持,以下是实现代码。
using System; using System.Collections.Generic; using System.Linq; using System.Text; using CookComputing.XmlRpc; using System.Text; namespace XmlrpcTest { public class Program { static void Main(string[] args) { IXmlrpc proxy = XmlRpcProxyGen.Create<IXmlrpc>(); var result = proxy.login("test123", "123456"); } } /// <summary> /// xmlrpc的部署的地址 /// </summary> [XmlRpcUrl("http://192.168.10.11:8080/middlers")] public interface IXmlrpc : IXmlRpcProxy { [XmlRpcMethod("middler.login")] int login(string szPassportId, string szPassword); } }
2. Loadrunner实现(更多请参考higkoo此大牛的博客:http://hi.baidu.com/higkoo/item/c7e8a33f4047cc83b711dbdc)
/* * xmlrpc接口参数组成 */ int XmlBody() { lr_save_string(lr_eval_string( "<?xml version=\"1.0\" encoding=\"GB2312\"?>" "<methodCall>" "<methodName>middler.login</methodName>" "<params>" "<param>"//如果接口有多个参数都按此格式添加 "<value>" "<string>test123</string>" "</value>" "</param>" "<param>" "<value>" "<string>123456</string>" "</value>" "</param>" "</params>" "</methodCall>"),"xmlStr"); } Action() { web_add_header("User-Agent", "Apache XML RPC 3.0 (Sun HTTP Transport)"); web_reg_find("Text=<int>1</int>", "Search=Body", "SaveCount=count_flag", LAST); //获取请求返回是否有<int>1</int> XmlBody(); lr_start_transaction("LoginTest"); web_custom_request("testXmlRpc", "Method=POST", "URL=http://192.168.10.11:8080/middlers", "RecContentType=text/xml", "EncType=text/xml;charset=UTF-8", "Body={xmlStr}", LAST); if(atoi(lr_eval_string("{count_flag}")) == 1) { lr_end_transaction("LoginTest",LR_PASS); } else { lr_error_message("账号注册不成功,请查看原因!%s",lr_eval_string("{Account}")); lr_end_transaction("LoginTest",LR_FAIL); } return 0; }
以上两个简单例子就完成了!欢迎各位拍砖。