当前位置: 首页 > news >正文

HttpClient调用api

/// <summary>
        /// 模拟调用API
        /// </summary>
        /// <param requestUrl="">请求地址</param>
        /// <param paramsBody="">调用参数</param>
        /// <returns></returns>
        public static string CallApi(string callUrl, string callBody, string callType = "POST")
        {
            if (string.IsNullOrEmpty(callUrl))
            {
                return "";
            }
            Stopwatch sw = new Stopwatch();
            sw.Start();
            HttpClient httpClient = null;
            try
            {
                httpClient = new HttpClient() { BaseAddress = new Uri("http://" + callUrl) };
                httpClient.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
                var httpMessage = new HttpRequestMessage();
                if (HttpMethod.Get.Method.Equals(callType, StringComparison.OrdinalIgnoreCase))
                {
                    httpMessage.Method = HttpMethod.Get;
                    var uri = string.Format("{0}?{1}", httpClient.BaseAddress, callBody);
                    httpMessage.RequestUri = new Uri(uri);
                }
                else
                {
                    httpMessage.Method = HttpMethod.Post;
                    httpMessage.Content = BuildPostParamsForCallApi(callBody);
                }
                var requestResult = httpClient.SendAsync(httpMessage).Result;
                var resultBody = requestResult.Content.ReadAsStringAsync().Result;

                sw.Stop();

                return resultBody;

            }
            catch
            {
                return "";
            }
            finally
            {
                if (httpClient != null)
                {
                    httpClient.Dispose();
                }
            }
        }

 

 

private static StringContent BuildPostParamsForCallApi(string paramsBody)
        {
            var content = new StringContent(paramsBody);

            //content.Headers.Clear();
            content.Headers.ContentType = new MediaTypeHeaderValue("application/x-www-form-urlencoded");
            return content;
        }

 

转载于:https://www.cnblogs.com/xuguanghui/p/6991326.html

相关文章:

  • 如何选择版本控制系统之三---代码托管操作
  • UVA 11324 The Largest Clique(强连通分量+缩点DAG的DP)
  • 隐马尔科夫模型HMM(四)维特比算法解码隐藏状态序列
  • Java - byte[] 和 String互相转换
  • 1.5在linux下新增大于2T的硬盘在linux下挂载操作
  • Mybatis在oracle批量更新
  • visual studio for mac在线安装网络错误
  • Angular--ui-router的使用
  • Linux 软件安装
  • 文本样式
  • 第11章 服务管理
  • SQL Server 锁实验(INSERT加锁探究)
  • OpenCV探索之路(十四):绘制点、直线、几何图形
  • 27部优秀的黑客纪录片
  • Tomcat指定JDK路径(Linux+Windows)
  • [分享]iOS开发-关于在xcode中引用文件夹右边出现问号的解决办法
  • 10个确保微服务与容器安全的最佳实践
  • Akka系列(七):Actor持久化之Akka persistence
  • Electron入门介绍
  • java8-模拟hadoop
  • Making An Indicator With Pure CSS
  • passportjs 源码分析
  • SAP云平台运行环境Cloud Foundry和Neo的区别
  • SpiderData 2019年2月23日 DApp数据排行榜
  • Spring Cloud Alibaba迁移指南(一):一行代码从 Hystrix 迁移到 Sentinel
  • 分布式任务队列Celery
  • 基于OpenResty的Lua Web框架lor0.0.2预览版发布
  • 开源地图数据可视化库——mapnik
  • 盘点那些不知名却常用的 Git 操作
  • 山寨一个 Promise
  • 使用docker-compose进行多节点部署
  • 一些关于Rust在2019年的思考
  • gunicorn工作原理
  • MyCAT水平分库
  • 继 XDL 之后,阿里妈妈开源大规模分布式图表征学习框架 Euler ...
  • # Java NIO(一)FileChannel
  • # Python csv、xlsx、json、二进制(MP3) 文件读写基本使用
  • #define、const、typedef的差别
  • #NOIP 2014# day.1 T3 飞扬的小鸟 bird
  • (02)vite环境变量配置
  • (23)Linux的软硬连接
  • (3)(3.5) 遥测无线电区域条例
  • (C语言)二分查找 超详细
  • (笔记)Kotlin——Android封装ViewBinding之二 优化
  • (二)pulsar安装在独立的docker中,python测试
  • (机器学习的矩阵)(向量、矩阵与多元线性回归)
  • (切换多语言)vantUI+vue-i18n进行国际化配置及新增没有的语言包
  • (入门自用)--C++--抽象类--多态原理--虚表--1020
  • (一)kafka实战——kafka源码编译启动
  • ***检测工具之RKHunter AIDE
  • *上位机的定义
  • .bat批处理(十):从路径字符串中截取盘符、文件名、后缀名等信息
  • .NET 使用 JustAssembly 比较两个不同版本程序集的 API 变化
  • /var/log/cvslog 太大
  • @cacheable 是否缓存成功_Spring Cache缓存注解