zoukankan      html  css  js  c++  java
  • c# winform调用webapi

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Net.Http;
    using System.Text;
    using System.Threading.Tasks;
    
    namespace WindowsFormsApp1
    {
        public class HttpClientHelper
    
        {
    
            /// <summary>
    
            /// HttpClient的Get请求
    
            /// </summary>
    
            ///<param name="url">请求地址,含拼接数据 </param>
    
            /// <returns></returns>
    
            public static string Get(string url)
    
            {
    
                var http = HttpClientFactory.GetHttpClient();
    
                var response1 = http.GetAsync(url).Result;
    
                return response1.Content.ReadAsStringAsync().Result;
    
            }
    
            /// <summary>
    
            /// HttpClient的Post请求
    
            /// 表单提交模式[application/x-www-form-urlencoded]
    
            /// </summary>
    
            /// <param name="url">请求地址,单纯的地址,没有数据拼接</param>
    
            /// <param name="data">请求数据,格式为:"userName=admin&pwd=123456"</param>
    
            /// <returns></returns>
    
            public static string PostForm(string url, string data)
    
            {
    
                var http = HttpClientFactory.GetHttpClient();
    
                var content = new StringContent(data, Encoding.UTF8, "application/x-www-form-urlencoded");
    
                var response = http.PostAsync(url, content).Result;
    
                return response.Content.ReadAsStringAsync().Result;
    
            }
    
     
    
    
    
            /// <summary>
    
            /// HttpClient的Post请求
    
            /// Json提交模式[application/json]
    
            /// </summary>
    
            /// <param name="url">请求地址,单纯的地址,没有数据拼接</param>
    
            /// <param name="data">请求数据,格式为(Json)对象、或者类对象 </param>
    
            /// <returns></returns>
    
            public static string PostJSON(string url, object data)
    
            {   
                //调用实例
                //var body = new
                //{
                //    userNameOrEmailAddress = "admin",
                //    password = "123qwe"
                //};
                //string token = HttpClientHelper.PostJSON("https://localhost:44302/api/TokenAuth/Authenticate", body);
    
                var http = HttpClientFactory.GetHttpClient();
    
                var content = new StringContent(Newtonsoft.Json.JsonConvert.SerializeObject(data), Encoding.UTF8, "application/json");
    
                var response = http.PostAsync(url, content).Result;
    
                return response.Content.ReadAsStringAsync().Result;
    
            }
    
     
    
        }
        public class HttpClientFactory
    
        {
    
            private static HttpClient _httpClient = null;
    
    
    
            /// <summary>
    
            /// 静态的构造函数:只能有一个,且是无参数的
    
            /// 由CLR保证,只有在程序第一次使用该类之前被调用,而且只能调用一次
    
            /// 说明: keep-alive关键字可以理解为一个长链接,超时时间也可以在上面进行设置,例如10秒的超时时间,当然并发量太大,这个10秒应该会抛弃很多请求
    
            /// 发送请求的代码没有了using,即这个httpclient不会被手动dispose,而是由系统控制它,当然你的程序重启时,这也就被回收了。
    
            /// </summary>
    
            static HttpClientFactory()
    
            {
    
                _httpClient = new System.Net.Http.HttpClient(new HttpClientHandler());
    
                _httpClient.Timeout = new TimeSpan(0, 0, 10);
    
                _httpClient.DefaultRequestHeaders.Connection.Add("keep-alive");
    
            }
    
    
    
            /// <summary>
    
            /// 对外开放接口
    
            /// </summary>
    
            /// <returns></returns>
    
            public static HttpClient GetHttpClient()
    
            {
    
                return _httpClient;
    
            }
    
        }
    }
    

      

  • 相关阅读:
    SVN还原项目到某一版本(转)
    C# Web Service 不使用服务引用直接调用方法(转)
    动态调用webservice时 ServiceDescriptionImporter类在vs2010无法引用的解决方法 (转)
    log4net示例2-日志输入存入Access(转)
    C# log4net 配置及使用详解--日志保存到文件和Access(转)
    未能解析引用的程序集......因为它对不在当前目标框架“.NETFramework,Version=v4.0,Profile=Client”中的 (转)
    Hello log4net——做一个实用好用的log4net的demo(转)
    JS移动客户端--触屏滑动事件
    js生成二维码实例
    触屏版类似刷新页面文本框获取焦点的同时弹出手机键盘的做法
  • 原文地址:https://www.cnblogs.com/sishahu/p/14554454.html
Copyright © 2011-2022 走看看