当前位置: 首页 > news >正文

在Winform,Silvelight,WPF等程序中访问Asp.net MVC web api

Asp.net mvc 4中出现的web api是用来实现REST.

关于什么是REST,可以看这里http://zh.wikipedia.org/zh/REST

 

通过ajax等访问 web api非常方便,但是如何在Winform, Silverlight等访问web api呢?

通过搜索,发现了已经有人做过这个东西了,就是RestSharp.

http://restsharp.org/

https://github.com/restsharp/RestSharp

 RestSharp不只是访问web api, 访问其他平台的Rest API也是一样。

看看介绍的使用,无论是post数据,文件,格式化返回数据,异步请求都非常方便:

 

var client = new RestClient("http://example.com");
// client.Authenticator = new HttpBasicAuthenticator(username, password);

var request = new RestRequest("resource/{id}", Method.POST);
request.AddParameter("name", "value"); // adds to POST or URL querystring based on Method
request.AddUrlSegment("id", 123); // replaces matching token in request.Resource

// add parameters for all properties on an object
request.AddObject(object);

// or just whitelisted properties
request.AddObject(object, "PersonId", "Name", ...);

// easily add HTTP Headers
request.AddHeader("header", "value");

// add files to upload (works with compatible verbs)
request.AddFile(path);

// execute the request
RestResponse response = client.Execute(request);
var content = response.Content; // raw content as string

// or automatically deserialize result
// return content type is sniffed but can be explicitly set via RestClient.AddHandler();
RestResponse<Person> response2 = client.Execute<Person>(request);
var name = response2.Data.Name;

// or download and save file to disk
client.DownloadData(request).SaveAs(path);

// easy async support
client.ExecuteAsync(request, response => {
    Console.WriteLine(response.Content);
});

// async with deserialization
var asyncHandle = client.ExecuteAsync<Person>(request, response => {
    Console.WriteLine(response.Data.Name);
});

// abort the request on demand
asyncHandle.Abort();

转载于:https://www.cnblogs.com/JustRun1983/archive/2012/11/08/2760994.html

相关文章:

  • python中的json和pickle
  • 接口库设计总结
  • 庆祝一下开通了第一条博客!
  • 微软私有云
  • fileUpload(草稿)
  • .NET多线程执行函数
  • jdk1.5新特性2之动态参数列表
  • 进阶第二十一课 Python多线程
  • 【ASP】简单Url编码和Url解码实例
  • Flannel网络组件部署
  • EXCEL应用技巧:如何在每行下插入一个空行
  • docker 关闭镜像后,容器无法启动---Conflict. The container nam
  • 【翻译】Nova国际化
  • stm 常用头文件
  • mysql中去重复记录
  • [笔记] php常见简单功能及函数
  • “寒冬”下的金三银四跳槽季来了,帮你客观分析一下局面
  • css选择器
  • dva中组件的懒加载
  • exif信息对照
  • Laravel深入学习6 - 应用体系结构:解耦事件处理器
  • Mysql优化
  • rabbitmq延迟消息示例
  • React+TypeScript入门
  • springboot_database项目介绍
  • 机器学习学习笔记一
  • 记一次和乔布斯合作最难忘的经历
  • 目录与文件属性:编写ls
  • 手机端车牌号码键盘的vue组件
  • 数据仓库的几种建模方法
  • 数组的操作
  • 限制Java线程池运行线程以及等待线程数量的策略
  • 小程序、APP Store 需要的 SSL 证书是个什么东西?
  • 原生js练习题---第五课
  • [Shell 脚本] 备份网站文件至OSS服务(纯shell脚本无sdk) ...
  • 京东物流联手山西图灵打造智能供应链,让阅读更有趣 ...
  • 容器镜像
  • ​创新驱动,边缘计算领袖:亚马逊云科技海外服务器服务再进化
  • ​中南建设2022年半年报“韧”字当头,经营性现金流持续为正​
  • (1)(1.11) SiK Radio v2(一)
  • (2)MFC+openGL单文档框架glFrame
  • (22)C#传智:复习,多态虚方法抽象类接口,静态类,String与StringBuilder,集合泛型List与Dictionary,文件类,结构与类的区别
  • (arch)linux 转换文件编码格式
  • (C#)一个最简单的链表类
  • (C)一些题4
  • (定时器/计数器)中断系统(详解与使用)
  • (二)PySpark3:SparkSQL编程
  • (二)基于wpr_simulation 的Ros机器人运动控制,gazebo仿真
  • (附源码)springboot 校园学生兼职系统 毕业设计 742122
  • (没学懂,待填坑)【动态规划】数位动态规划
  • (四) 虚拟摄像头vivi体验
  • (四)docker:为mysql和java jar运行环境创建同一网络,容器互联
  • (转)Android中使用ormlite实现持久化(一)--HelloOrmLite
  • (转)EOS中账户、钱包和密钥的关系
  • .net core 6 集成和使用 mongodb