使用 HttpLib 来访问 Web 服务
本文地址:http://www.oschina.net/translate/using-httplib-to-consume-web-services
原文地址:http://www.codeproject.com/Tips/518621/Using-HttpLib-to-consume-web-services
下载看了下源码,发现封装的还是蛮好的,学习 !
介绍
C# 为开发者提供很多便利方法用来访问各种 Web 服务,但是编写异步的访问方式却是有点复杂。Windows 通讯框架是一个客户端/服务器通讯非常棒的工具。我精彩发现我自己必须写很多代码来使用已有的 API。微软提供的这些 API 对一些基本的使用来说都是过于复杂。而 HttpLib 大大的简化了在 C# 中异步的访问 Web 服务的编程。使用该库仅需1行代码就可以访问网页和上传文件到 Web 服务器,如果你是使用 HttpWebRequest 来完成相同功能则需 30 行代码。
HttpLib 可从 http://www.oschina.net/p/httplib 网站上下载。
背景
用户只需要对 GET 和 POST 熟悉就可以了,其他的扩展知识有则更好,没有也没关系。
GET 网页
该异步的方法异步的请求一个网页,并将结果传递给一个 Lambda 表达式:
Request.Get("http://www.oschina.net/", result=> { Console.Write(result); });
提交数据到 Web 服务
使用相同的方式可以将数据提交给 Web 服务,可传入一个匿名对象用来表示请求的对象。
Request.Post("http://testing.local/post.php", new {name="James",username="Redslide"}, result=> { Console.Write(result); });
上传文件到服务器
HttpLib 也支持 Multipart/form-encoded 文件上传方法。FileStreams 可复制到 Web 请求。你可以在 Sliverlight 应用中直接通过摄像头获取 ImageStream 来上传数据:
Request.Upload("http://testing.local/post.php", new {name = "value"}, new [] {new NamedFileStream("file", "photo.jpg", "image/jpeg", new FileStream(@"C:\photo.jpg",FileMode.Open))}, result=> { Console.Write(result); });
兴趣点
匿名对象序列化
匿名对象可通过反射来序列化,对象所有的属性列表可通过 GetProperties() 来获取,这个方法使得序列化器迭代所有请求的值:
foreach (var property in Parameters.GetType().GetProperties()) { string name = property.Name string value = property.GetValue(Parameters, null).ToString(); }
Refer:
http://httplib.codeplex.com/
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· .NET周刊【3月第1期 2025-03-02】
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· [AI/GPT/综述] AI Agent的设计模式综述