• 使用 HttpClient 请求 Web Api


    1.获取 post 请求 body 内容
    
    [HttpPost]
    public string GetId()
    {
      //如果方法参数里面有 [FromBody],则需要重新调整内容指针,再进行读取。 //Request.Content.ReadAsStreamAsync().Result.Seek(0,System.IO.SeekOrigin.Begin);
      string content = Request.Content.ReadAsStringAsync().Result;   return content; }

      

    方法名称 描述
    GetAsync 发送一个GET请求到指定的Uri,异步操作。
    GetByteArrayAsync 向指定的Uri发送一个GET请求,并将返回响应的数据作为一个字节数组,异步操作。
    GetStreamAsync 向指定的Uri发送一个GET请求,并返回响应的数据流,异步操作。
    GetStringAsync 向指定的Uri发送一个GET请求,并将返回响应的数据转换为Sting,异步操作。
    PostAsync 向指定的Uri发送一个POST请求,异步操作。
    PostAsJsonAsync 向指定的Uri发送一个Post请求,返回数据格式为json,异步操作。
    PostAsXmlAsync 向指定的Uri发送一个Post请求,返回数据格式为xml,异步操作。
    PutAsync 向指定的Uri发送一个Put请求,异步操作。
    PutAsJsonAsync 向指定的Uri发送一个Put请求,返回数据格式为json,异步操作。
    PutAsXmlAsync 向指定的Uri发送一个Put请求,返回数据格式为xml,异步操作。
    DeleteAsync 向指定的Uri发送一个Delete请求,异步操作。

     private static void SendRequest()
            {
                using (var client = new System.Net.Http.HttpClient())
                {
                    
                    client.BaseAddress = new Uri("http://192.168.1.3:42561/");
                    var url = "apitest/order/pager";
    
                    //添加自定义头信息
                    client.DefaultRequestHeaders.Add("name", "wjire");
    
                    //设置头信息中的 Authorization
                    client.DefaultRequestHeaders.Authorization = new System.Net.Http.Headers.AuthenticationHeaderValue("scheme", "Mima");
    
    
                    //PostAsJsonAsync 及上表中几个类似方法都需要引用nuget中的 Microsoft.AspNet.WebApi.Client
    
    
                    //Post方法一:用json格式传递参数
                    //client.PostAsJsonAsync(url, new Person { Name = "fffff", Id = 123, Age = 100 }).ContinueWith(GetResponse);;
    
    
                    //Post方法二:匿名类,原理同方法一 
                    //var content = new
                    //{
                    //    Name = "gg",
                    //    Id = 1,
                    //    Age = 1
                    //};
                    //client.PostAsJsonAsync(url, content).ContinueWith(GetResponse);;
    
    
                    //Post方法三: 原生的键值对形式传递参数
                    //var content = new FormUrlEncodedContent(new Dictionary<string, string>
                    // {
                    //    {"id","1" },
                    //    {"name","wjjj" },
                    //    {"age","100" }
                    // });
                    //client.PostAsync(url, content).ContinueWith(GetResponse);;
    
    
                    //Get方式
                    //这里如果要传递参数,参数个数必须包含请求的API接口所接收的所有参数,只能多,不能少,否则无法传递.其实多了也没有意义
                    var task = client.GetAsync(url + "?age=100&id=121&name=go1ng").ContinueWith(GetResponse);
    
    
                    Console.ReadLine();
                }
            }
    
            private static void GetResponse(Task<HttpResponseMessage> obj)
            {
                var getResult = obj.Result;
    
                //判断请求是否成功
                var isSuccess = getResult.IsSuccessStatusCode;
                if (isSuccess)
                {
                    //这里当然也可以转成自定义类
                    var readResult = getResult.Content.ReadAsAsync<dynamic>();
                    var model = readResult.Result;
                    Console.WriteLine(model.Age);
                    Console.WriteLine(model.Name);
                    Console.WriteLine(model.Id);
                }
            }
  • 相关阅读:
    MySQL 重要参数 innodb_flush_log_at_trx_commit 和 sync_binlog
    mysql物理日志和逻辑日志_mysql物理日志redo log和逻辑日志 binlog
    Navicat Premium for Mac 破解版
    qps是什么
    如何实现扫码登录功能?
    goland debug
    [Golang] 初探之 sync.Once
    go语言:sync.Once的用法
    Golang进程权限调度包runtime三大函数Gosched,Goexit,GOMaXPROCS
    Go unsafe 包之内存布局
  • 原文地址:https://www.cnblogs.com/refuge/p/8053221.html
Copyright © 2020-2023  润新知