首页 > 其他分享 >Http压缩zip,加密base64发送与获取

Http压缩zip,加密base64发送与获取

时间:2024-06-15 15:55:14浏览次数:18  
标签:Http string zip base64 request outStream ex new Message

//数据压缩成Zip再发送

public static string ZipBasebyte(string xml)
{
byte[] bytesToCompress = Encoding.GetEncoding("GBK").GetBytes(xml);
MemoryStream ms = new MemoryStream();
ZipEntry ze = new ZipEntry("servletservice");

using (ZipOutputStream outStream = new ZipOutputStream(ms))
{
outStream.UseZip64 = UseZip64.Off;

outStream.PutNextEntry(ze);
outStream.IsStreamOwner = false;
outStream.Write(bytesToCompress, 0, bytesToCompress.Length);
outStream.Flush();
outStream.CloseEntry();
outStream.Finish();
}
byte[] byteCompress = ms.ToArray();
//把字节转码为Base64格式字符串
string strOut = Convert.ToBase64String(byteCompress);
return strOut;
}

 

/// <summary>
/// 解压缩
/// </summary>
/// <param name="route"></param>
/// <returns></returns>
public static string TUnzipBase64(string route)
{
string outString = string.Empty;
try
{
//先解码Base64格式字符串
byte[] inArr = Convert.FromBase64String(route.Trim());

//从已压缩的字节数组生成原始字节数组
byte[] writeData = new byte[4096];
ZipInputStream InpStream = new ZipInputStream(new MemoryStream(inArr));
ZipEntry ze = InpStream.GetNextEntry();//获取压缩文件中的每一个文件

MemoryStream outStream = new MemoryStream();
while (ze != null)//如果解压完ze则是null
{
while (true)
{
int i = InpStream.Read(writeData, 0, writeData.Length);
if (i > 0)
{
outStream.Write(writeData, 0, i);
}
else
{
outStream.Flush();
break;
}
}
ze = InpStream.GetNextEntry();
}
InpStream.Close();
byte[] outArr = outStream.ToArray();
outStream.Close();


outString = Encoding.UTF8.GetString(outArr);
}
catch (NullReferenceException nEx)
{
return nEx.Message;
}
return outString;
}

 

 

//将数据加密为base64

public static string Base64Decode(Encoding encodingType, string result)
{
string encode = string.Empty;
byte[] bytes=encodingType.GetBytes(result);
try
{
encode = Convert.ToBase64String(bytes);
}
catch (Exception err)
{

encode = result;
}
return encode;
}

//获取Http请求

public static string GetRequest(string requestUrl, Dictionary<string, string> headers = null)
{
try
{
int outTime = 6;
using (HttpClient client = new HttpClient())
{
if (headers != null && headers.Count > 0)
{
foreach (var header in headers)
{
client.DefaultRequestHeaders.Add(header.Key, header.Value);
}
}
client.Timeout = TimeSpan.FromSeconds(outTime);
var responseString = client.GetStringAsync(requestUrl);
string content = responseString.Result;
SystemInfoManager.SaveMessageErr(content);
return content;
}
}
catch (Exception ex)
{
SystemInfoManager.SaveMessageErr(ex.ToString());
return ex.ToString();

}
}

 

//发送Http请求

public static string Restful(string jsonParam,string meth,string url,string userName,string userPassword,string authToken,string contentType,ref string errMsg)
{
string json = string.Empty;
try
{
//创建restful的请求
HttpWebRequest request = WebRequest.Create(url) as HttpWebRequest;
request.Method = meth;
request.KeepAlive = false;
request.Timeout = 60000;
request.ContentType = contentType;
if (authToken == "") {
request.Accept = "*/*";
}
else
{
request.Accept = "text/plain";
}
request.ServicePoint.Expect100Continue = false;
if (!string.IsNullOrEmpty(userName))
{
request.Headers.Add("userCode", userName);
}
if (!string.IsNullOrEmpty(userPassword))
{
string Password = Base64Decode(Encoding.UTF8, userPassword);
request.Headers.Add("password", Password);
}
if (!string.IsNullOrEmpty(authToken))
{
request.Headers.Add("authToken", authToken);
}
if (!string.IsNullOrEmpty(jsonParam) && meth.ToLower()=="post")
{
string data = ZipBasebyte(jsonParam);
SystemInfoManager.SaveMessage_WCS(data);
byte[] byteData = UTF8Encoding.UTF8.GetBytes(data.ToString());
request.ContentLength = byteData.Length;
using (Stream postStream = request.GetRequestStream())
{
try
{
postStream.Write(byteData, 0, byteData.Length);
}
catch (Exception ex)
{
errMsg = ex.Message;
SystemInfoManager.SaveMessage_WCS("服务器信息报错异常:" + ex.Message);
}
}
}
else
{
request.ContentLength = 0;
}

string[] str = request.Headers.AllKeys;

//接收来自restful的回复
using (HttpWebResponse response = request.GetResponse() as HttpWebResponse)
{
if (!string.IsNullOrEmpty(jsonParam))
{
try
{
if (response.StatusCode == HttpStatusCode.OK)
{
json = "200";
}
}
catch (Exception ex)
{
errMsg = ex.Message;
SystemInfoManager.SaveMessage_WCS("读取服务返回信息报错:" + ex.Message);
}
}
else
{
try
{
//以流的形式读取,返回的就是字符串的json格式
StreamReader reader = new StreamReader(response.GetResponseStream());
json = reader.ReadToEnd();
SystemInfoManager.SaveMessage_WCS("服务返回信息json:" + json);
}
catch (Exception ex)
{
errMsg = ex.Message;
SystemInfoManager.SaveMessage_WCS("读取服务返回信息报错:" + ex.Message);
}
}
}
}
catch (Exception ex)
{
errMsg = ex.Message;
SystemInfoManager.SaveMessage_WCS("与服务器信息交互信息报错异常:" + ex.Message);
}
return json;
}

标签:Http,string,zip,base64,request,outStream,ex,new,Message
From: https://www.cnblogs.com/KevinSteven/p/18249380

相关文章

  • 用c语言实现base64编码接口程序
    简要介绍base64Base64编码是一种常用的编码方式,主要用于将二进制数据转换为可打印的ASCII字符集,以便在不支持二进制传输的介质上安全地传输数据。......
  • 【学习笔记】透视HTTP协议(六):发起请求后,处理流程是怎么样子的?
      本文是一篇学习笔记,学习的课程是极客时间的《透视HTTP协议》。透视HTTP协议_HTTP_HTTPS-极客时间(geekbang.org)本文主要描述发起请求后,具体的处理过程。目录一、简述浏览器HTTP请求过程二、详述浏览器HTTP请求过程一、简述浏览器HTTP请求过程示例:在Chrome浏览......
  • 利用某些平台(聚合API、百度AI、科大讯飞API)的API接口,利用HTTP协议向服务器发送请求,并
    要使用C语言通过HTTP协议向服务器发送请求并接收响应,你可以使用如libcurl这样的库来发送HTTP请求。libcurl是一个免费且易于使用的客户端URL传输库,支持多种协议,包括HTTP。同时,为了解析服务器响应中的JSON数据,你可以使用cJSON库,这是一个轻量级的JSON解析库。以下是一个简单的示例......
  • http和https的区别是什么
    HTTP(超文本传输协议)和HTTPS(安全超文本传输协议)是互联网上用于传输数据的两种主要协议。它们的主要区别在于数据传输的安全性。1.安全性:-HTTP:不加密,数据以明文形式传输,容易被截获和篡改,因此存在安全风险。-HTTPS:在HTTP的基础上增加了SSL/TLS协议,对数据进行加密,确保数......
  • nginx配置https访问
    1、配置文件内容如下:worker_processes1;events{worker_connections1024;}error_log/tmp/error.loginfo;http{includemime.types;default_typeapplication/octet-stream;log_formatmain'$remote_addr-$remote_user[$time_local]&qu......
  • Dubbo3 服务原生支持 http 访问,兼具高性能与易用性
    作者:刘军作为一款rpc框架,Dubbo的优势是后端服务的高性能的通信、面向接口的易用性,而它带来的弊端则是rpc接口的测试与前端流量接入成本较高,我们需要专门的工具或协议转换才能实现后端服务调用。这个现状在Dubbo3中得到了彻底解决,Dubbo3.3版本的最新triple协议,在持续提......
  • 【学习笔记】透视HTTP协议(五):什么是DNS?
     本文是一篇学习笔记,学习的课程是极客时间的《透视HTTP协议》。透视HTTP协议_HTTP_HTTPS-极客时间(geekbang.org)DNS(DomainNameSystem)是域名系统的缩写,它是一个分布式数据库系统,用于将人们易于记忆和理解的域名(如 www.example.com)转换为计算机能够理解和处理的IP地址(如......
  • SQL注入&HTTP 头XFF&COOKIE&POST请求
    目录#知识点:#补充点:案例演示1数据请求方式涉及到的问题:phpJavaSpringPython案例演示2手工注入sqlmap注入方式一方式二案例演示3​编辑案例演示4#知识点:1、数据请求方式-GET&POST&COOKIE等2、常见功能点请求方式-用户登录&IP记录等3、黑盒白盒注入......
  • Windows Server 2012 R2部署网站后IIS,只要访问网址应用程序池就自动停止,浏览器页面提
     解决方案:1.查看windows日志通过文件资源管理器查看:打开文件资源管理器,找到“我的电脑”。右键点击“管理”。在弹出的窗口中,点击“事件查看器”。在事件查看器中,点击“Windows日志”即可查看各种日志信息 2.找到错误信息......
  • netcore HTTP Error 500.30 - ASP.NET Core app failed to start
    netcoreHTTPError500.30-ASP.NETCoreappfailedtostart 错误解释:HTTPError500.30表示在尝试启动ASP.NETCore应用程序时发生了错误。这通常是因为应用程序无法找到或无法正确加载.NETCore运行时或应用程序的相关依赖项。解决方法:确认.NETCore运行时已安装:检查......