zoukankan      html  css  js  c++  java
  • 使用 HttpLib 来访问 Web 服务

    介绍

    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();
    }
  • 相关阅读:
    netframework webapi IogAttribute记录request参数和错误信息
    An error occurred while starting a transaction on the provider connection. See the inner exception for details.
    mvc partialView断点调试问题
    mysql 用行号rownum更新顺序号字段
    sqlserver 导入excel
    vs2017 git凭证问题
    DataTable 转换为List
    Resharper 修改命名空间
    web api解决序列化后返回标准时间带T问题
    获取当前程序的路径
  • 原文地址:https://www.cnblogs.com/shihao/p/2845148.html
Copyright © 2011-2022 走看看