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();
        }
    }
}

C#_模拟webAp_POST-GET-PUT-DELETE,布布扣,bubuko.com

时间: 2024-10-16 20:39:57

C#_模拟webAp_POST-GET-PUT-DELETE的相关文章

03-02自底向上风格_模拟游戏

模拟游戏 模拟井字棋游戏 九个格子中双方轮流落子. 其中一方画x符号,另一方画o符号. 开始时,9个格子都是空的. 程序显示当前局面,提示某一方输入落子位置,然后显示局面,再提示另一方. 当某方棋子连成直线,该方获胜! 例如: 初始: _ _ _ _ _ _ _ _ _ o 输入位置: 1,1 o _ _ _ _ _ _ _ _ x 输入位置: 2,2 o _ _ _ x _ _ _ _ 当某一方出现了3个棋子连成直线或对角线,则该方获胜 标准答案: import java.util.*; cl

HDU 4941 Magical Forest _(:зゝ∠)_ 模拟题

模拟大法保平安_(:зゝ∠)_ #include <cstdio> #include <map> #include <set> #include <algorithm> using namespace std; const int N = 1; struct node{ int x, y, val; node(int a=0,int b=0,int c=0):x(a),y(b),val(c){} bool operator<(const node&am

SpringMVC 模拟 PUT 提交和 DELETE 方式的提交

步骤 1:在 web.xml 中配置 HiddenHttpMethodFilter 过滤器 <filter> <filter-name>HiddenHttpMethodFilter</filter-name> <filter-class>org.springframework.web.filter.HiddenHttpMethodFilter</filter-class> </filter> <filter-mapping>

python爬虫学习(3)_模拟登陆

1.登陆超星慕课,chrome抓包,模拟header,提取表单隐藏元素构成params. 主要是验证码图片地址,在js中发现由js->new Date().getTime()时间戳动态生成url,python对应time.time(),生成验证码图片url,图片下载在本地,手动输入.代码如下: #coding=utf-8 import requests import time from bs4 import BeautifulSoup header={ 'Referer':'http://aus

noip _模拟1_1

小象和老鼠 CH Round #15 -[Nescafé 31]杯NOIP模拟赛 描述 S国的动物园是一个N*M的网格图,左上角的坐标是(1,1),右下角的坐标是(N,M).小象在动物园的左上角,它想回到右下角的家里去睡觉,但是动物园中有一些老鼠,而小象又很害怕老鼠.动物园里的老鼠是彼此互不相同的.小象的害怕值定义为他回家的路径上可以看见的不同的老鼠的数量.若小象当前的位置为(x1,y1),小象可以看见老鼠,当且仅当老鼠的位置(x2,y2)满足|x1-x2|+|y1-y2|<=1.由于小象很困了

零基础逆向工程40_Win32_14_枚举窗口_模拟鼠标键盘

1 查找窗口 1.1 代码案例 //查找指定窗口 TCHAR szTitle[MAX_PATH] = {0}; HWND hwnd = ::FindWindow(TEXT("#32770"),TEXT("飞鸽传书 IP Messenger")); if(hwnd != NULL) { //修改窗口标题 ::SetWindowText(hwnd,"新的窗口标题"); } else { ::MessageBox(NULL,TEXT("窗口没

jzoj 3519_灵能矩阵_模拟

题目描述 Protoss 的灵能矩阵由若干个节点所构成.它们构成了一棵有根树,树根为1 号节点.定义没有子节点的节点为叶节点.叶节点内储存着一定量的能量,而非叶节点的能量为它子树中所有叶节点的能量之和. 如果一个节点的每一个子节点的能量都相同,那么这个节点就是能量平衡的.如果矩阵内每一个节点都能量平衡,则这个矩阵是能量平衡的. 被你所接管的这个灵能矩阵,似乎在长期的废弃之后已经无法保持的能量的平衡.为了重新让矩阵平衡,你可以通过将叶节点储存的能量散逸到太空中.你不可以使一个叶节点储存的能量为负数

node.js学习笔记_模拟路由

路由就是浏览器输入url地址,服务端根据对url地址的解析,访问对应的代码模块.var    http    =    require('http');var    url    =    require('url');var    router    =    require('./router');http.createServer(function    (request,    response)    {        response.writeHead(200,    {'Cont

SSL 2676_数学_模拟

题目描述 小A得到了一个数列A,他告诉你这个数列中所有的A[i]都是1到n的自然数,并且告诉你对于一些A[i]不能取哪些值.无聊的你想要知道所有可能的数列的积的和.定义一个数列的积为这个数列所有数的乘机.由于答案太大,只要模10^9+7输出即可. 思路 首先有一个规律就是ans为每一项中没有被限制的数相加让后相乘 显然这样直接暴力会T,数据中的限制有 $10^5$ 个,而总数则有$10^9$ 个 所以没有限制条件的数量还是很多的,我们就可以用一个快速幂加上暴力来求解 #include <stdi