zoukankan      html  css  js  c++  java
  • C#_模拟webAp_POST-GET-PUT-DELETE

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Net;
    using System.IO;
    using System.Web;
    namespace WebAPIClientDemo
    {
        public class RestClient
        {
            private string BaseUri;
            public RestClient(string baseUri)
            {
                this.BaseUri = baseUri;
            }
    
            #region Delete方式
            public string Delete(string data, string uri)
            {
                return CommonHttpRequest(data, uri, "DELETE");
            }
    
            public string Delete(string uri)
            {
                //Web访问对象64
                string serviceUrl = string.Format("{0}/{1}", this.BaseUri, uri);
                HttpWebRequest myRequest = (HttpWebRequest)WebRequest.Create(serviceUrl);
                myRequest.Method = "DELETE";
                // 获得接口返回值68
                HttpWebResponse myResponse = (HttpWebResponse)myRequest.GetResponse();
                StreamReader reader = new StreamReader(myResponse.GetResponseStream(), Encoding.UTF8);
                //string ReturnXml = HttpUtility.UrlDecode(reader.ReadToEnd());
                string ReturnXml = reader.ReadToEnd();
                reader.Close();
                myResponse.Close();
                return ReturnXml;
            }
            #endregion
    
            #region Put方式
            public string Put(string data, string uri)
            {
                return CommonHttpRequest(data, uri, "PUT");
            }
            #endregion
    
            #region POST方式实现
    
            public string Post(string data, string uri)
            {
                return CommonHttpRequest(data,uri,"POST");
            }
    
            public string CommonHttpRequest(string data, string uri,string type)
            {
                //Web访问对象,构造请求的url地址
                string serviceUrl = string.Format("{0}/{1}", this.BaseUri, uri);
    
                //构造http请求的对象
                HttpWebRequest myRequest = (HttpWebRequest)WebRequest.Create(serviceUrl);
                //转成网络流
                byte[] buf = System.Text.Encoding.GetEncoding("UTF-8").GetBytes(data);
                //设置
                myRequest.Method = type;
                myRequest.ContentLength = buf.Length;
                myRequest.ContentType = "application/json";
                myRequest.MaximumAutomaticRedirections = 1;
                myRequest.AllowAutoRedirect = true;
                // 发送请求
                Stream newStream = myRequest.GetRequestStream();
                newStream.Write(buf, 0, buf.Length);
                newStream.Close();
                // 获得接口返回值
                HttpWebResponse myResponse = (HttpWebResponse)myRequest.GetResponse();
                StreamReader reader = new StreamReader(myResponse.GetResponseStream(), Encoding.UTF8);
                string ReturnXml = reader.ReadToEnd();
                reader.Close();
                myResponse.Close();
                return ReturnXml;
            }
            #endregion
    
            #region GET方式实现
            public string Get(string uri)
            {
                //Web访问对象64
                string serviceUrl = string.Format("{0}/{1}", this.BaseUri, uri);
               
                //构造一个Web请求的对象
                HttpWebRequest myRequest = (HttpWebRequest)WebRequest.Create(serviceUrl);
                // 获得接口返回值68
                //获取web请求的响应的内容
                HttpWebResponse myResponse = (HttpWebResponse)myRequest.GetResponse();
                
                //通过响应流构造一个StreamReader
                StreamReader reader = new StreamReader(myResponse.GetResponseStream(), Encoding.UTF8);
                //string ReturnXml = HttpUtility.UrlDecode(reader.ReadToEnd());
                string ReturnXml = reader.ReadToEnd();
                reader.Close();
                myResponse.Close();
                return ReturnXml;
            }
            #endregion
        }
    }

    调用方式

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    
    namespace WebAPIClientDemo
    {
        class Program
        {
            static void Main(string[] args)
            {
                RestClient client = new RestClient("http://localhost:50168");
    
                #region Get 方式请求列表
                string str = client.Get("api/values");
    
                Console.WriteLine(str); 
                #endregion
    
                #region Get 方式请求id对应的数据
                string strGetById = client.Get("api/values/2");
    
                Console.WriteLine(strGetById); 
                #endregion
    
                #region Post 方式 添加数据
    
                string postUri = "api/values/";
    
                string userJson = @"{""Id"":123,""Age"":12,""UserInfo"":""111""}";
    
                string postResponse = client.Post(userJson, postUri);
    
                Console.WriteLine(postResponse);
                #endregion
    
                #region Delete 
    
                string deleteUri = "api/values/3";
                 string deleteResponse = client.Delete(deleteUri);
    
                Console.WriteLine(  deleteResponse);
                #endregion
    
                #region Put
                string putUri = "api/values/123";
    
                string userJson3 = @"{""Id"":123,""Age"":12,""UserInfo"":""111""}";
    
                string putResponse = client.Post(userJson3, putUri);
    
                Console.WriteLine(putResponse);
                #endregion
    
                Console.ReadKey();
            }
        }
    }
  • 相关阅读:
    Ubuntu10下MySQL搭建Amoeba_分片
    MySQL多Text字段报8126错误(解决过程)
    SQL Server 维护计划实现数据库备份(Step by Step)
    Ubuntu10下MySQL搭建Master Slave
    Ubuntu10下安装JAVA JDK
    Windows下安装MySQL最佳实践
    Ubuntu12下重新挂载硬盘
    Windows 下使用Git管理Github项目
    解决Windows Server2008 R2中IE开网页时弹出阻止框
    Win Server 2008中开启Areo特效
  • 原文地址:https://www.cnblogs.com/MarchThree/p/3908687.html
Copyright © 2011-2022 走看看