.Net Standard HttpClient封装Htt请求常用操作整理

一、常用Http操作

1.Get请求,有参数,无参数

2.Post 请求,有参数,无参数

3.文件简单下载

    /// <summary>
    /// http协议请求方法封装
    /// </summary>
    public class NetHelper
    {
        #region Get请求
        /// <summary>
        /// get请求,无参
        /// </summary>
        /// <param name="url"></param>
        /// <returns></returns>
        public static async Task<string> GetAsync(string url)
        {
            HttpClient client = new HttpClient();
            HttpResponseMessage resp = await client.GetAsync(url);
            //获取响应状态
            //respMsg.StatusCode==200请求成功
            //获取请求内容
            HttpContent respContent = resp.Content;
            return await respContent.ReadAsStringAsync();
        }
        /// <summary>
        /// Get 请求,指定参数
        /// </summary>
        /// <param name="url"></param>
        /// <param name="dic"></param>
        /// <returns></returns>
        public static async Task<string> GetAsync(string url, Dictionary<string, string> dic)
        {
            //参数处理
            StringBuilder builder = new StringBuilder();
            builder.Append(url);
            if (dic.Count > 0)
            {
                builder.Append("?");
                int i = 0;
                foreach (var item in dic)
                {
                    if (i > 0)
                        builder.Append("&");
                    builder.AppendFormat("{0}={1}", item.Key, item.Value);
                    i++;
                }
            }
            return await GetAsync(builder.ToString());
        }

        /// <summary>
        /// get 请求 -同步处理
        /// </summary>
        /// <param name="url"></param>
        /// <returns></returns>
        public static string Get(string url)
        {
            Task<string> result = GetAsync(url);
            result.Wait();
            return result.Result;
        }
        /// <summary>
        /// Get请求-同步处理
        /// </summary>
        /// <param name="url">请求地址</param>
        /// <param name="dic">请求参数</param>
        /// <returns></returns>
        public static string Get(string url, Dictionary<string, string> dic)
        {
            //参数处理
            StringBuilder builder = new StringBuilder();
            builder.Append(url);
            if (dic.Count > 0)
            {
                builder.Append("?");
                int i = 0;
                foreach (var item in dic)
                {
                    if (i > 0)
                        builder.Append("&");
                    builder.AppendFormat("{0}={1}", item.Key, item.Value);
                    i++;
                }
            }
            return Get(builder.ToString());
        }
        #endregion

        #region Post 请求处理
        /// <summary>
        /// Post 请求,无参
        /// </summary>
        /// <param name="url"></param>
        /// <returns></returns>
        public static async Task<string> PostAsync(string url, string content = "")
        {
            HttpClient client = new HttpClient();
            using (MemoryStream ms = new MemoryStream())
            {
                byte[] bytes = Encoding.Unicode.GetBytes(content);
                ms.Write(bytes, 0, bytes.Length);
                HttpContent hc = new StreamContent(ms);
                HttpResponseMessage resp = await client.PostAsync(url, null);
                return await resp.Content.ReadAsStringAsync();
            }
        }
        /// <summary>
        /// Post 请求,处理参数
        /// </summary>
        /// <param name="url"></param>
        /// <param name="dic"></param>
        /// <returns></returns>
        public static async Task<string> PostAsync(string url, Dictionary<string, string> dic)
        {
            HttpClient client = new HttpClient();
            FormUrlEncodedContent data = new FormUrlEncodedContent(dic);
            var r = await client.PostAsync(url, data);
            return await r.Content.ReadAsStringAsync();
            //client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("text/html"));
            //client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/xhtml+xml"));
            //client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/xml", 0.9));
            //client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("image/webp"));
            //client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("*/*", 0.8));
            //hc.Headers.Add("UserAgent", "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.57 Safari/537.36");
            //hc.Headers.Add("Timeout", timeOut.ToString());
            //hc.Headers.Add("KeepAlive", "true");
        }

        /// <summary>
        /// Post请求,同步,无参
        /// </summary>
        /// <param name="url"></param>
        /// <param name="content"></param>
        /// <returns></returns>
        public static string Post(string url, string content = "")
        {
            Task<string> str = PostAsync(url, content);
            str.Wait();
            return str.Result;
        }
        /// <summary>
        /// Post 请求,同步,参数处理
        /// </summary>
        /// <param name="url"></param>
        /// <param name="dic"></param>
        /// <returns></returns>
        public static string Post(string url, Dictionary<string, string> dic)
        {
            Task<string> str = PostAsync(url, dic);
            str.Wait();
            return str.Result;
        }
        #endregion

        #region 下载文件处理
        /// <summary>
        /// 下载文件
        /// </summary>
        /// <param name="url">链接地址</param>
        /// <param name="target">存储地址</param>
        /// <returns></returns>
        public static bool DownLoad(string url, string target)
        {
            try
            {
                HttpClient client = new HttpClient();
                var t = client.GetByteArrayAsync(url);
                t.Wait();

                var bytes = t.Result;
                using (FileStream fs = new FileStream(target, FileMode.Create))
                {
                    fs.Write(bytes, 0, bytes.Length);
                    fs.Close();
                }
                return true;
            }
            catch (Exception ex)
            {
                throw new Exception("下载文件失败,", ex);
            }
        }
        #endregion
    }

更多:

.Net Standard 类库的创建和使用

.Net Standard Http请求实例

.Net Standard简介

原文地址:https://www.cnblogs.com/tianma3798/p/9025172.html

时间: 2024-10-11 16:32:09

.Net Standard HttpClient封装Htt请求常用操作整理的相关文章

vim编辑器——常用操作整理

注意:以下的操作都是在命令状态下进行的,不要进入插入状态了 1.删除 dd       删除一行 ndd    删除以当前行开始的n行dw    删除以当前字符开始的一个字符ndw   删除以当前字符开始的n个字符d$.D 删除以当前字符开始的一行字符d)     删除到下一句的开始d}    删除到下一段的开始d回车      删除2行 2.复制粘贴 vi设置自动缩进:set smartindentvi设置显示行号:set number 或 set nu set nonu为取消行号 co:co

String类的常用操作整理

一.String类 字符与字符串操作: public char charAt(int index) 根据下标找到指定字符 public char[] toCharArray() 以字符数组的形式返回全部的字符串内容 public String(char[] value) 将全部的字符数组变成字符串 构造方法 public String(char[] value,int offset,int count) 将指定范围的字符数组变为字符串 构造方法 二.String类 字节与字符串操作 public

Mysql数据库常用操作整理

备注:MySQL数据库是一个十分轻便的数据库管理系统,相比大型的数据库管理系统如Oracle,MySQL更拥有轻便.灵活.开发速度快的特色,更适用于中小型数据的存储与架构.MySQL之所以能够被数以万计的网站采用,也是由此而来.从5版本以后,陆续支持了游标.触发器.事务.存储过程等高级应用,这也给MySQL的易用性和企业服务的发展添加了重要的砝码.数据库的基础很少,但数据库的性能优化却是最重要的,所以多多优化,必有裨益. 零. 用户管理 1. 一. 数据库操作 1. 查看数据库 SHOW DAT

数据库常用操作整理

例子一: 在数据库中往往有以下的统计操作,要统计某种类型的样本有多少个,并且找出大于500个样本的类型,以及拥有的样本数目.具体例子如,在SQL中,一个表的定义如下: CREATE TABLE t_account( account varchar(100), account_type TINYTEXT, PRIMARY KEY (account), }; account为账号,account_type为该账号的类型,写出一个sql,统计账号数累计超过5000个账号类型,并显示对应的账号数,即结果

Git常用操作整理

git rebase 合并多个commit为一个完整commit 这种情况适用于在本地分支进行开发时,本地有多次commit,在提交到远程仓库时,自由编辑组合commit后(也就是说可以全部合并为一次commit),再push上去. 参考链接: 1.[Git]rebase 用法小结 原文地址:https://www.cnblogs.com/Xtick/p/12304570.html

httpclient 封装 http(get put post delete)请求

@SuppressWarnings("deprecation") public class HttpClientUtil { private static Logger logger = LoggerFactory.getLogger(HttpClientUtil.class); private static final String ContentEncoding = "UTF-8"; private static final int SocketTimeout

vue项目常用之二:封装 axios 请求模块

/** * 封装 axios 请求模块 */ import axios from 'axios' import jsonBig from 'json-bigint' import store from '@/store' import router from '@/router' import { Notify } from 'vant' // axios.create 方法:复制一个 axios const request = axios.create({ baseURL: 'http://t

Anroid-async-http封装网络请求框架源码分析

Android-async-http开源项目可以是我们轻松的获取网络数据或者向服务器发送数据,使用起来非常简单, 这个网络请求库是基于Apache HttpClient库之上的一个异步网络请求处理库,网络处理均基于Android的非UI线程,通过回调方法处理请求结果. 主要特点:处理异步Http请求,并通过匿名内部类处理回调结果,Http异步请求均位于非UI线程,不会阻塞UI操作,通过线程池处理并发请求处理文件上传.下载,响应结果自动打包JSON格式. 一, Android-async-http

Ajax-04 jQuery Ajax 常用操作

jQuery jQuery 其实就是一个JavaScript的类库,其将复杂的功能做了上层封装,使得开发者可以在其基础上写更少的代码实现更多的功能. jQuery Ajax a.概述 jQuery 不是生产者,而是大自然的搬运工 jQuery Ajax 本质是 XMLHttpRequest 或 ActiveXObject b.使用 --- 下载导入jQuery(2.+ 版本不再支持IE9以下的浏览器) jQuery Ajax常用操作 jQuery.ajax( url [, settings ]