1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Net;
  6. using System.IO;
  7. using System.Web;
  8. namespace WebAPIClientDemo
  9. {
  10. public class RestClient
  11. {
  12. private string BaseUri;
  13. public RestClient(string baseUri)
  14. {
  15. this.BaseUri = baseUri;
  16. }
  17.  
  18. #region Delete方式
  19. public string Delete(string data, string uri)
  20. {
  21. return CommonHttpRequest(data, uri, "DELETE");
  22. }
  23.  
  24. public string Delete(string uri)
  25. {
  26. //Web访问对象64
  27. string serviceUrl = string.Format("{0}/{1}", this.BaseUri, uri);
  28. HttpWebRequest myRequest = (HttpWebRequest)WebRequest.Create(serviceUrl);
  29. myRequest.Method = "DELETE";
  30. // 获得接口返回值68
  31. HttpWebResponse myResponse = (HttpWebResponse)myRequest.GetResponse();
  32. StreamReader reader = new StreamReader(myResponse.GetResponseStream(), Encoding.UTF8);
  33. //string ReturnXml = HttpUtility.UrlDecode(reader.ReadToEnd());
  34. string ReturnXml = reader.ReadToEnd();
  35. reader.Close();
  36. myResponse.Close();
  37. return ReturnXml;
  38. }
  39. #endregion
  40.  
  41. #region Put方式
  42. public string Put(string data, string uri)
  43. {
  44. return CommonHttpRequest(data, uri, "PUT");
  45. }
  46. #endregion
  47.  
  48. #region POST方式实现
  49.  
  50. public string Post(string data, string uri)
  51. {
  52. return CommonHttpRequest(data,uri,"POST");
  53. }
  54.  
  55. public string CommonHttpRequest(string data, string uri,string type)
  56. {
  57. //Web访问对象,构造请求的url地址
  58. string serviceUrl = string.Format("{0}/{1}", this.BaseUri, uri);
  59.  
  60. //构造http请求的对象
  61. HttpWebRequest myRequest = (HttpWebRequest)WebRequest.Create(serviceUrl);
  62. //转成网络流
  63. byte[] buf = System.Text.Encoding.GetEncoding("UTF-8").GetBytes(data);
  64. //设置
  65. myRequest.Method = type;
  66. myRequest.ContentLength = buf.Length;
  67. myRequest.ContentType = "application/json";
  68. myRequest.MaximumAutomaticRedirections = ;
  69. myRequest.AllowAutoRedirect = true;
  70. // 发送请求
  71. Stream newStream = myRequest.GetRequestStream();
  72. newStream.Write(buf, , buf.Length);
  73. newStream.Close();
  74. // 获得接口返回值
  75. HttpWebResponse myResponse = (HttpWebResponse)myRequest.GetResponse();
  76. StreamReader reader = new StreamReader(myResponse.GetResponseStream(), Encoding.UTF8);
  77. string ReturnXml = reader.ReadToEnd();
  78. reader.Close();
  79. myResponse.Close();
  80. return ReturnXml;
  81. }
  82. #endregion
  83.  
  84. #region GET方式实现
  85. public string Get(string uri)
  86. {
  87. //Web访问对象64
  88. string serviceUrl = string.Format("{0}/{1}", this.BaseUri, uri);
  89.  
  90. //构造一个Web请求的对象
  91. HttpWebRequest myRequest = (HttpWebRequest)WebRequest.Create(serviceUrl);
  92. // 获得接口返回值68
  93. //获取web请求的响应的内容
  94. HttpWebResponse myResponse = (HttpWebResponse)myRequest.GetResponse();
  95.  
  96. //通过响应流构造一个StreamReader
  97. StreamReader reader = new StreamReader(myResponse.GetResponseStream(), Encoding.UTF8);
  98. //string ReturnXml = HttpUtility.UrlDecode(reader.ReadToEnd());
  99. string ReturnXml = reader.ReadToEnd();
  100. reader.Close();
  101. myResponse.Close();
  102. return ReturnXml;
  103. }
  104. #endregion
  105. }
  106. }
  107.  
  108. //调用代码demo
  109. string serviceUrl = "http://localhost:44540/";
  110. RestClient client = new RestClient(serviceUrl);
  111. string data = @"{""UserName"":""1111"",""Age"":123,""Id"":133}";
  112. string uriPost = "api/values/3";
  113. string retPost = client.Put(data, uriPost);

C# 中经常用到的HTTP请求类,已封装get,post,delete,put的更多相关文章

  1. jQuery中ajax的4种常用请求方式

    jQuery中ajax的4种常用请求方式: 1.$.ajax()返回其创建的 XMLHttpRequest 对象. $.ajax() 只有一个参数:参数 key/value 对象,包含各配置及回调函数 ...

  2. struts中的请求数据自动封装

    Struts 2框架会将表单的参数以同名的方式设置给对应Action的属性中.该工作主要是由Parameters拦截器做的.而该拦截器中已经自动的实现了String到基本数据类型之间的转换工作.在st ...

  3. js中ajax如何解决跨域请求

    js中ajax如何解决跨域请求,在讲这个问题之前先解释几个名词 1.跨域请求 所有的浏览器都是同源策略,这个策略能保证页面脚本资源和cookie安全 ,浏览器隔离了来自不同源的请求,防上跨域不安全的操 ...

  4. iOS实现OAuth2.0中刷新access token并重新请求数据操作

    一.简要概述 OAuth2.0是OAuth协议的下一版本,时常用于移动客户端的开发,是一种比较安全的机制.在OAuth 2.0中,server将发行一个短有效期的access token和长生命期的r ...

  5. (转)通过在 Page 指令或 配置节中设置 validateRequest=false 可以禁用请求验证

    通过在 Page 指令或 配置节中设置 validateRequest=false 可以禁用请求验证 说明:   请求验证过程检测到有潜在危险的客户端输入值,对请求的处理已经中止.该值可能指示危及应用 ...

  6. EBS 开发中如何动态启用和禁止请求(Current Request)的参数

    EBS 开发中如何动态启用和禁止请求(Current Request)的参数 (版权声明,本人原创或者翻译的文章如需转载,如转载用于个人学习,请注明出处:否则请与本人联系,违者必究) 我们可以使用依赖 ...

  7. Spring拦截器中通过request获取到该请求对应Controller中的method对象

    背景:项目使用Spring 3.1.0.RELEASE,从dao到Controller层全部是基于注解配置.我的需求是想在自定义的Spring拦截器中通过request获取到该请求对应于Control ...

  8. jquery ajax 请求中多出现一次OPTIONS请求及其解决办法

    http://www.tangshuang.net/2271.html 在上一篇<服务端php解决jquery ajax跨域请求restful api问题及实践>中,我简单介绍了如何通过服 ...

  9. Springboot中使用AOP统一处理Web请求日志

    title: Springboot中使用AOP统一处理Web请求日志 date: 2017-04-26 16:30:48 tags: ['Spring Boot','AOP'] categories: ...

随机推荐

  1. iOS开发中一些常用的方法

    1.压缩图片 #pragma mark 处理图片 - (void)useImage:(UIImage *)image { NSLog(@"with-----%f heught-----%f& ...

  2. 机器学习算法-K-means聚类

    引文: k均值算法是一种聚类算法.所谓聚类.他是一种无监督学习,将类似的对象归到同一个蔟中.蔟内的对象越类似,聚类的效果越好. 聚类和分类最大的不同在于.分类的目标事先已知.而聚类则不一样. 由于其产 ...

  3. 【转】cocos2d-x获取系统时间——2013-08-25 10

    欢迎转载,本帖地址:http://blog.csdn.net/jinjian2009/article/details/9449585 之前使用过cocos2d-x获取系统时间,毫秒级的 long ge ...

  4. j2ee学习笔记 javascript 学习

    JavaScript 组成: ECMAScript + BOM + DOM Window对象是JS中的顶层对象 ECMAScript: 规定了一些语法,变量,for循环等等结构 BOM: Browse ...

  5. 关于ellipsize属性使用的一些细节

    ellipsize主要是处理当文字长度超过TextView可显示的长度的时候,系统的处理方式,ellipsize主要有以下几种值: android:ellipsize="start" ...

  6. Java IO学习笔记

    Java流的分类,一般可按以下方式分: 按方向分,分为输入流,输出流. 按类型分,分为字节流和字符流. 2.1字节流是通过字节来读取数据 2.2字符流是通过字符来读取数据 按操作方式分,分为节点流和过 ...

  7. web项目设计与开发——DBHelper

    学习web项目设计与开发主要是在上学期web程序开发的基础上添上了思想和更深的理解. 在学习之前,我们需要下载好相关的软件——MyEclipse以及配置文件JDK.tomcat.再添加除MyEclip ...

  8. 友元(friend)--初学篇

    友元:友好的元子,,,,呵呵呵 一般一个类中有私有(private),公有(public),和保护(protected)三种类型成员,而只有public成员才可以在类外被随便访问,protected只 ...

  9. cobbler部署

    1.cobbler介绍 Cobbler是一个快速网络安装linux的服务,而且在经过调整也可以支持网络安装windows.该工具使用python开发,小巧轻便(才15k行python代码),使用简单的 ...

  10. 新增的html5中js获取方法

    一.querySelector   获取的选择器与jquery的选择器相同