鉴于电脑在下载kubuntu,别写下最近几天的学习心得。

刚开始时是想把网易、新浪、cnblogs等博客整合一起做成一个Windows Phone有关的客户端的。但是现在遇到了瓶颈。

XML-RPC是什么,根据个人理解,是基于XML的远程调度协议(Remote Procedure Control)。RPC就像是这个程序在本地运行,然后运行到需要调用的子程序时,向网络发出调用并且获取结果。

网易等博客的API是基于xml-rpc里面的metaweblog的接口,我们只要实现了即可。

一.有关xml-rpc

百度百科有很详尽的解释:http://baike.baidu.com/view/643379.htm

然后由于XML-RPC需要实现,鉴于自己技术功底不行。只能依靠网上的开源项目。又由于自己想在.net平台上实现,自然会选择到xml-rpc了。

有关xml-rpc的.net实现,在这里要感谢Charles Cook大神。下载连接在这里:http://xmlrpcnet.googlecode.com/files/xml-rpc.net.3.0.0.270-snapshot.zip

选择3.0的版本下载。选择这个版本的原因是因为这个版本支持windows phone。

二。实现

由于在win下实现比较方便,先选择了WIN。

官方有自带的说明文档,想详细了解的可以查看:http://xml-rpc.net/

看了下,无非就是需要我们去实现一个类或继承一个接口来调用xml-rpc。我们使用的时候,把bin里面某个特定的(电脑CookComputing.XmlRpcV2.dll,WP是有phone的那个)dll添加到references即可。然后使用该域:using CookComputing.XmlRpc;

虽然官网上文档提供了使用XmlRpcProxyGen的类来实现的方法,但是由于这个类我没找到,所以我用了继承XmlRpcProxy这个类来实现的。

这个也是网上有相关的demo启发的:http://www.cnblogs.com/canlay/archive/2012/05/04/2483055.html

这个demo提供的是同步的实现,至于异步,可参考文档的2.10节。

这里我给个郑老师给的demo,这个demo是WP的,鉴于某些问题,修改了代码的一部分:

 1 using System;
 2 using System.Collections.Generic;
 3 using System.Linq;
 4 using System.Net;
 5 using System.Windows;
 6 using System.Windows.Controls;
 7 using System.Windows.Documents;
 8 using System.Windows.Input;
 9 using System.Windows.Media;
10 using System.Windows.Media.Animation;
11 using System.Windows.Shapes;
12 using Microsoft.Phone.Controls;
13 using CookComputing.XmlRpc;
14 using System.Reflection;
15
16 namespace PhoneApp1
17 {
18     public partial class MainPage : PhoneApplicationPage
19     {
20         // 构造函数
21         public MainPage()
22         {
23             InitializeComponent();
24         }
25
26         private void button1_Click(object sender, RoutedEventArgs e)
27         {
28             double number = 2340.0;
29             var proxy = new TestProxy();
30             proxy.BeginGetName(number, asr =>
31             {
32                 Dispatcher.BeginInvoke(delegate()
33                 {
34                     try
35                     {
36                         textBox1.Text = proxy.EndGetName(asr);
37                     }
38                     catch (XmlRpcFaultException fex)
39                     {
40                         textBox1.Text = "[" + fex.FaultCode.ToString() + "] " + fex.FaultString;
41
42                     }
43                     catch (Exception ex)
44                     {
45                         textBox1.Text = ex.Message;
46                     }
47                 });
48             });
49         }
50     }
51     [XmlRpcUrl("远程调用的网址")]
52     public class TestProxy : XmlRpcClientProtocol
53     {
54         [XmlRpcBegin("调用函数的名字")]
55         public IAsyncResult BeginGetName(double a,  AsyncCallback acb)
56         {
57             return this.BeginInvoke(MethodBase.GetCurrentMethod(), new object[] { a }, acb, null);
58         }
59         [XmlRpcEnd]
60         public string EndGetName(IAsyncResult iasr)
61         {
62             string ret = (string)this.EndInvoke(iasr);
63             return ret;
64         }
65     }
66 }

DEMO之中设计到C#的reflection特性,也是让我好好学习了。

好了,里面的[XmlRpc....]这些代码是不是不知道在干什么?相关的知识有关C#的attribute和xml-rpc的文档,里面有详细定义怎么实现的。还有XmlRpcProxy.Invoke这个方法正是程序调用远程API函数的方法。

三。博客之研究

好,前面我们介绍有关xml-rpc的相关知识了。现在我们来研究博客。

因为以前本人都在在163平台下写博的,所以先拿它开刀!

这篇文章说明了博客的API:http://blog.163.com/blog_admin/blog/static/721279201082863728829/?frompersonalbloghome

至于里面的有关结构,我们可以在下载的文件中的interface找到相关的struct,自行添加到自己域中即可。

blogid是采用“default”,username格式是"你的用户名" + "@126"(或“@163”)

其中categories结构体由于163自行改动了一些,在调试过程中会出现问题。此时我们把会掉失的变量引入[XmlRpcMissingMapping(MappingAction.Ignore)]即可。

这是实测成功的图片:

好了,其他的API请自行研究吧。MetaWeBlog这个API在博客平台上非常常见,cnblogs,windows live等等也有,自行搜索吧。

那么我现在遇到的问题是在WP平台上进行同样的操作(无论是异步还是同步)总会出错:

代码的正确性等等已经验证了,在同步中出现如上图的错误,如果是异步的话,会出现invalidcast的错误。

不知道是不是因为这个库对WINDOWS PHONE还没完全支持的原因。希望大家能帮忙解决我的问题。

转载于:https://www.cnblogs.com/apir8181/archive/2012/09/14/2685526.html

XML-RPC技术在WP上研究(一)相关推荐

  1. 计算机应用 网络管理开发,基于XML的iBAC网络管理系统的研究与开发-计算机应用技术专业论文.docx...

    ⅢY ⅢY iii■l 洲8 mmj■I ㈣0 Ⅲ4 6 ㈣2 学位论文数据集 中图分类号TP311.1学科分类号520.3040 论文编号10010200705 12密级 学位授予单位代码10010 ...

  2. 都 2021 年了,竟然有人搞大数据时忽略 JSON 而去研究用 C# 把 XML 转换为 XML 的技术...

    在大数据项目开发过程中,ETL(Extract-Transform-Load)是必不可少.即便目前 JSON 非常流行,开发人员也有必定会有对远古系统的挑战,而 XML 格式的数据源作为经典存在浑身上 ...

  3. RPC 技术及其框架 Sekiro 在爬虫逆向中的应用,加密数据一把梭

    文章目录 什么是 RPC JSRPC Sekiro 优缺点 什么是 RPC RPC,英文 RangPaCong,中文让爬虫,旨在为爬虫开路,秒杀一切,让爬虫畅通无阻! 开个玩笑,实际上 RPC 为远程 ...

  4. javax包 rpc_javax.xml.rpc和javax.wsdl分别属于哪个jar包?

    关于"javax.xml.rpc和javax.wsdl分别属于哪个jar包?"这个问题,我认为: javax.xml.rpc属于jaxrpc.jar包; javax.wsdl属于w ...

  5. MindSpore技术理解(上)

    MindSpore技术理解(上) 引言 深度学习研究和应用在近几十年得到了爆炸式的发展,掀起了人工智能的第三次浪潮,并且在图像识别.语音识别与合成.无人驾驶.机器视觉等方面取得了巨大的成功.这也对算法 ...

  6. 342.基于高通量技术的微生物组研究实验设计

    基于高通量技术的微生物组研究实验设计 --微生物组研究,从方案设计到写作套路(二) 作者:王晓雯 凌波微课 版本1.0.2,更新日期:2020年9月22日 好文章离不开好设计 研究第一步就是要结合自己 ...

  7. SMRT测序技术及其在微生物研究中的应用

    SMRT测序技术及其在微生物研究中的应用 唐勇1,2, 刘旭3 摘要:高通量测序技术的发展为研究者深入探索微生物世界提供可能.随着以Pacific BioSciences(PacBio)公司的单分子实 ...

  8. 计算机技术应用及信息管理,计算机应用技术与信息管理整合研究(共2808字).doc...

    计算机应用技术与信息管理整合研究(共2808字) 计算机应用技术与信息管理整合研究(共2808字) 摘要:随着现代信息技术的不断发展,计算机技术已广泛应用于各行各业的管理和运行中,且呈现迅猛的发展趋势 ...

  9. Spring OXM- 漫谈XML解析技术

    概述 XML解析技术漫谈 认识XML XMl的处理技术 概述 我们先从XML各种解析技术的发展历程谈起,并介绍一些主流 O/X Mapping组件的使用方法,比如XStream.Castor.JiBX ...

最新文章

  1. PyTorch Cookbook(常用代码合集)
  2. VB 6.0中如何访问EXCEL 2007及EXCEL 2010
  3. 使用函数PIVOT现实数据行转列
  4. Java语言编码规范(1)
  5. 自媒体敏感词大全_2020年自媒体软件大全,这里真的有大宝贝……
  6. 浏览器兼容CSS渐进增强 VS 优雅降级如何选择
  7. SpringBoot集成MyBatis的分页插件PageHelper
  8. 5条件筛选功能_一分钟,彻底学会Excel高级筛选,坐等升职加薪!
  9. 1.7编程基础之字符串_04石头剪子布
  10. remix卡在android root,小米平板刷入remixeOS后怎么root?
  11. 超分辨率在移动实时音视频的应用实践
  12. 大数据抗疫的“洪荒之力”:多地政府借力大数据技术,多家企业上马大数据产品...
  13. 看完左耳朵耗子的116篇文章,我给自己定了个5年技术规划
  14. 为什么蓝鸽的听力下载完还是听不了_听力训练方法干货-说说我与雅思听力的那些事情...
  15. Unity中配合EmmyLua的Lua使用方案
  16. Steam游戏导入vrPlus中运行
  17. tensorflow serving warmup
  18. InnoSetup程序开机自启
  19. 如何定位Java源文件_webgisframe.java 源代码在线查看 - 实现网络GPS定位车辆的位置 资源下载 虫虫电子下载站...
  20. 杰里之AI 唤醒SIRI功能篇

热门文章

  1. Wordpress 数据库查询错误 Call to a member function get_results() on null
  2. 麦肯锡指出布局金融生态圈对中国国内银行意义重大
  3. 关于nginx keep-alive 参数的验证和心得
  4. python面向对象编程(2)
  5. wireshark in text mode: tshark
  6. 编译AVX代码,升级Redhat 5.5 GCC至4.7.1
  7. Dallas CTP3 发布通告
  8. .NET 技术社区之我见(中文篇)
  9. ANTLR笔记2 - 简单语法说明
  10. Pytest之收集用例及命令行参数