栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > .Net

(C#语言) httpClient使用put方式提交multiparty/form-data 数据类型 的 csv格式的文件【bear token鉴权】

.Net 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

(C#语言) httpClient使用put方式提交multiparty/form-data 数据类型 的 csv格式的文件【bear token鉴权】

要求C#语言在微博service接口中使用content-type:multiparty/form-data属性,上传csv文件,且头部添加bear格式的jwt鉴权。实现通过接口完成批量数据的传输及同步。

//全局变量

public string urlHost=“”;

#region 主函数

[WebMethod(Description="连通性测试")]

public void TestBatch()

{

        urlHost="http://22.22.22.22.:8089/tencent";

        if(!string.IsNullOrEmpty(urlHost))

        {

                //根目录

                string departID = "tt-6e4rrtty4579dsfs96";

                //urlHost 访问地址的接口地址

                urlHost+=string.Format(@"/api/v"+departID +"/obj?obj=user");

                #region 创建文件

                DateTime dt = DateTime.Now;

                string TencentBatch=ConfigurationManager.AppSettings["mulu1"];

                string headPath=ConfigurationManager.AppSettings["mulu2"];

                string middlePath=TencentBatch+dt.Year+"/"+(dt.Month<10?"0":"")+dt.Month+"/"+(dt.Day<10?"0":"")+dt.Day+"/";

                if(!System.IO.Directory.Exists(headPath+middlePath.Replace("/","\")))

                {

                        Directory.CreateDirectory(headPath+middlePath.Replace("/","\"));

                }

                //eg:D:\测试文件夹\测试1\测试22022122aa_1_1.csv

                string path = headPath+middlePath.Replace("/","\")+"aa_1_1.csv";

               int pos=path.LastIndexOf("\");

                string fileName=path.Substring(pos+1);

               string firstLine=string.Format(@"id,modifiedOn");

               //tchModel上送模板的列明,

               List lt = new List();

               tchModel tmbm = new tchModel();

               tmbm .id="id2";

               tmbm .modifiedOn="2022/02/02";

               lt.Add(tmbm);

               bool bl=WriteFile(path,lt,firstLine); 

                #endregion

                //自定义请求方式

                HttpRequestMessage requestMessage=new HttpRequestMessage();

                requestMessage.Method = HttpMethod.Put;

                requestMessage.RequestUri = new Uri(urlHost);

                //1.数据流存入

                Stream fileStream=new FileStream(path,FileMode.Open,FileAccess.Read); 

                var formData=new MultipartFormDataContent();

                formData.Add(new StreamContent(fileStream),"file",fileName);

               

                requestMessage.Content=formData;

               

                HttpClient client = new HttpClient();

                var authenticationHeaderValue = new AuthenticationHeaderValue("Bearer",GetToken());

                client.DefaultRequestHeaders.Authorization = authenticationHeaderValue;

                client.DefaultRequestHeaders.Add("CharSet","utf-8");

                

                HttpResponseMessage result = client.SendAsync(requestMessage).Result;

                string responseResult = result.Content.ReadAsStringAsync().Result;

                client.Dispose();

                fileStream.Close();

                try{

                        if(result.IsSuccessStatusCode)

                        {

                                string r=result.Content.ReadAsStringAsync().Result;

                                Context.Response.Write(r);

                        }                

                }finally{

                        fileStream.Close();

                        client.Dispose();

                }

        }

}

#endregion

//====================生成文件===================

public static bool WriteFile(string fileName,List dataTable,string firstLine)

{

        bool flag = false;

        try{

                if(File.Exists(fileName))

                {

                        File.Delete(fileName);

                }

                using(FileStream fs=new FileStream(fileName,FileMode.Create))

                {

                        //指定Encodeing.UTF8,避免生成的文件乱码

                        using(StreamWriter sw = new StreamWriter(fs,Encodeing.UTF8))

                        {

                                string info Line= string.Empty;

                                sw.WriteLine(firstLine);

                                foreach(var item in dataTable)

                                {

                                        infoLine +=",,";

                                }

                                sw.Close();        

                        }

                        fs.Close();

                }

        }

}

//-----生成J问题Token---

public string Get Token()

{

        var headers = new Dictionary(){

                {"type","JWT"},

                {"kid","58888888-8888-8888-8888-888888888888"}

        };

        long iat =(long)DateTime.Now.ToUniversalTime().Subtract(new DateTime(1970,1,1)).TotalSeconds;

        long exp =(long)DateTime.Now.AddMinutes(1.0).ToUniversalTime().Subtract(new DateTime(1970,1,1)).TotalSeconds;

        var claims = new Dictionary()

        {

                {"aud","test"},

                {"iss","22222222-2222-2222-2222-222222222222"},

                {"iat",iat},

                {"exp",exp},

                {"accounttype","serviceA"}

        };

        //需要通过pem实例化[RS256算法,需要实例化RSAParameters ]

        RSACryptoServiceProvider privateKey;

        string path=HttpContext.Current.Server.MapPath("~/"+"test-pri.pem");

        StreamReader reader =new StreamReader(path);

        PemReader pemReader = new PemReader(reader);

        AsymmetricCipherKeyPair keyPair = (AsymmetricCipherKeyPair)pemReader.ReadObject();

        RSAParameters rsaParameters=DotNetUtilities.ToRSAParameters((RsaPrivateCrtKeyParameters)keyPair.Private);

        privateKey = new RSACryptoServiceProvider();

        privateKey.ImportParameters(rsaParameters);

        var token=Jose.JWT.Encode(claims,privateKey,Jose.JwsAlgorithm.RS256,extraHeaders:headers);

        return token;

}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/984212.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号