`
yesjavame
  • 浏览: 691076 次
  • 性别: Icon_minigender_2
  • 来自: 杭州
文章分类
社区版块
存档分类
最新评论

HTTPS传送文件的打包方式(为一个朋友调试的过程)

阅读更多

https通道如果服务端忽略客户证书(也就是不要求客户提交证书,只是通讯过程用SSL对数据加密传输)的话,
在应用层和普通HTTP没有区别,因为加密的是协议层,你客户端应用程序打包和服务端处理的逻辑不需要改变
(仅仅是加一个验证方法而已)
先定义一个回调方法:
public static bool MyCallback(Object sender,
X509Certificate certificate,
X509Chain chain,
System.Net.Security.SslPolicyErrors sslPolicyErrors )
{ return true; }
然后在传输之前调用: System.Net.ServicePointManager.ServerCertificateValidationCallback = new System.Net.Security.RemoteCertificateValidationCallback(MyCallback);
就行了,下面和普通HTTP没有任何区别,服务端接收处理也完全一样:

//makeData

FileStreamfs
=newFileStream("d:\\a.gif",FileMode.Open);
byte[]tf=newbyte[(int)fs.Length];
fs.Read(tf,
0,(int)fs.Length);
fs.Close();

StringBuilderdata
=newStringBuilder("-----------------------------7d8333515d0cfe\r\n");
data.Append(
"Content-Disposition:form-data;name=\"uname\"\r\n\r\n");
data.Append(
"axmen\r\n");
data.Append(
"-----------------------------7d8333515d0cfe\r\n");
data.Append(
"Content-Disposition:form-data;name=\"passwd\"\r\n\r\n");
data.Append(
"111111\r\n");
data.Append(
"-----------------------------7d8333515d0cfe\r\n");
data.Append(
"Content-Disposition:form-data;name=\"myfile\";filename=\"D:\\a.gif\"\r\n");
data.Append(
"Content-Type:image/gif\r\n\r\n");
byte[]tmp=Encoding.ASCII.GetBytes(data.ToString());
data
=newStringBuilder("\r\n-----------------------------7d8333515d0cfe--\r\n");
byte[]end=Encoding.ASCII.GetBytes(data.ToString());
byte[]buf=newbyte[tmp.Length+tf.Length+end.Length];
Array.Copy(tmp,
0,buf,0,tmp.Length);
Array.Copy(tf,
0,buf,tmp.Length,tf.Length);
//澶氫釜鏂囦欢閲嶅涓婇潰鐨勬墦鍖呰繃绋?
Array.Copy(end,0,buf,tmp.Length+tf.Length,end.Length);

//endmakedata

System.Net.ServicePointManager.ServerCertificateValidationCallback
=newSystem.Net.Security.RemoteCertificateValidationCallback(MyCallback);
HttpWebRequestrequest
=(HttpWebRequest)WebRequest.Create("https://192.168.3.28:81/MyWebSite/Handler.ashx");
request.Accept
="image/gif,image/x-xbitmap,image/jpeg,image/pjpeg,application/x-shockwave-flash,application/vnd.ms-excel,application/vnd.ms-powerpoint,application/msword,application/x-ms-application,application/x-ms-xbap,application/vnd.ms-xpsdocument,application/xaml+xml,application/x-silverlight,application/x-silverlight-2-b1,*/*";
request.ContentType
="multipart/form-data;boundary=---------------------------7d8333515d0cfe";
request.ContentLength
=buf.Length;
request.UserAgent
="Mozilla/4.0(compatible;MSIE6.0;WindowsNT5.1;SV1;.NETCLR2.0.50727;.NETCLR3.0.04506.648;.NETCLR3.5.21022)";
request.Headers.Add(
"Accept-Language:zh-cn");
request.Headers.Add(
"Accept-Encoding:gzip,deflate");
//request.Headers.Add("Host:www.XXXX.com");
request.Method="POST";
request.GetRequestStream().Write(buf,
0,buf.Length);
request.GetRequestStream().Flush();
request.GetRequestStream().Close();
HttpWebResponserep
=(HttpWebResponse)request.GetResponse();
StreamReadersr
=newStreamReader(rep.GetResponseStream(),ASCIIEncoding.ASCII);
stringtext=sr.ReadToEnd();
sr.Close();
Console.WriteLine(text);


服务端的接收:

usingSystem;
usingSystem.Web;

publicclassHandler:IHttpHandler...{

publicvoidProcessRequest(HttpContextcontext)...{
stringusername=context.Request.Form.Get("uname");
HttpPostedFilehpf
=context.Request.Files[0];
context.Response.ContentType
="text/html";
context.Response.Output.WriteLine(
"yournameis:{0},Filefrom:{1},ctis:{2},clis:{3}",username,hpf.FileName,hpf.ContentType,hpf.ContentLength);
}


publicboolIsReusable...{
get...{
returnfalse;
}

}


}

分享到:
评论

相关推荐

    exe可执行文件打包工具

    MoleBox Pro是这样一个专业的执行文件打包工具,版本为V2.6.5,并且已经进行了汉化处理,方便中国用户使用。这款绿色版意味着它不需要正式的安装过程,下载解压后可以直接运行,减少了用户的操作步骤。 使用MoleBox...

    生成excel并打包成zip文件

    - 添加文件到ZIP:使用`ZipEntry`为每个文件创建一个条目,然后用`ZipOutputStream`的`putNextEntry()`方法打开条目,接着通过`FileInputStream`读取原始文件内容并写入`ZipOutputStream`,最后关闭条目。...

    laravelexcelzip用于将一个大型Excel打包成Zip文件下载

    考虑到大型Excel文件可能导致内存溢出或者浏览器下载速度慢,这个库提供了一个巧妙的解决方案,即将Excel文件打包成ZIP格式进行下载。 `laravel-excel-zip`的主要功能在于,它允许开发者在内存管理可控的情况下,将...

    串口调试精灵打包.rar

    《串口调试精灵打包》是一款专为硬件调试设计的实用工具,它简化了串口通信的调试过程,使得用户能够更高效地进行设备交互和数据传输。本文将深入探讨这款软件的功能、应用以及如何进行安装。 串口调试精灵,...

    彩虹岛SPF打包解包源码

    《彩虹岛SPF打包解包源码》是一个专注于处理彩虹岛游戏中的SPF文件的工具。SPF全称为"Server Package File",是游戏开发者为了方便数据管理与传输,将游戏资源进行压缩打包的一种文件格式。这个源码库提供了解包和...

    makecab打包cab文件

    同时,`makecab` 会生成一个 .LOG 文件,其中包含了打包过程的详细信息,方便调试和问题排查。 【标签】:“makecab” `makecab` 的标签强调了它是一个专门用于创建 CAB 文件的工具。在 IT 领域,熟悉如何使用 `...

    sis文件打包解包工具.rar

    sis文件打包解包工具是专为Symbian操作系统设计的软件打包和解包工具,它主要服务于SIS和SISX格式的应用程序。SIS和SISX是诺基亚等智能手机在Symbian系统上安装应用的标准格式,类似于Android的APK或iOS的IPA文件。 ...

    文件传输器

    在文件传输器中,可能使用了TCP套接字,因为它提供了一种可靠的数据传输方式,确保数据在传输过程中的完整性和顺序。 多线程技术可能被用来提高程序的效率。例如,一个线程负责接收文件,另一个线程则处理传输请求...

    基于QT的局域网文件传输

    【基于QT的局域网文件传输】是一种使用C++编程语言和QT库实现的本地网络文件共享技术。...对于想要学习QT和网络编程的初学者,这个项目提供了丰富的实践机会,同时也为网络文件共享提供了一个简单的实现方案。

    Android WIFI热点 自动连接 大文件小文件传输稳定 多文件传输

    对于多文件传输,一种方法是将所有文件打包成一个大文件,如ZIP,然后作为单一文件进行传输,接收端再解压。另一种方法是建立多个单独的文件传输连接,每个文件一个连接。在单文件传输的代码基础上,通过循环遍历...

    zlib库封装,支持多文件、多文件夹打包

    - 在软件安装包制作中,支持多文件打包的功能可以方便地将所有组件整合在一起。 总之,Windows平台下对Zlib库的封装,尤其是支持多文件和多文件夹打包的功能,为开发者提供了强大而便捷的工具,简化了数据压缩的...

    EXE文件捆绑打包机(源码).rar

    文件捆绑是指将多个文件打包到一个单一的文件中,通常是为了方便传输或隐藏组件。在软件开发中,这可能用于将必需的库文件、配置文件或数据文件与主程序一起分发,减少用户安装时的操作步骤。 3. **打包机原理**:...

    java银行系统的class文件打包

    Java银行系统的class文件打包是将已经编译好的Java源...总之,Java银行系统的class文件打包是一个涉及编译、归档、运行和管理多个环节的过程。正确地打包和运行jar文件,能确保银行系统在不同环境下的稳定性和可靠性。

    打包几款好用的Modbus调试工具

    Modbus RTU(远程终端单元)是Modbus协议的一个变种,它使用串行通信接口。在调试RTU模式时,你需要确保设备的波特率、数据位、停止位和奇偶校验设置正确。调试工具可以模拟主设备或从设备,发送和接收Modbus请求和...

    能打包数据库文件的类

    标题中的“能打包数据库文件的类”指的是一个特定的C#类库,它具有将数据库文件集成到项目或软件包中的功能。这类类通常用于自动化处理数据库文件的打包过程,以便于分发、部署或者备份。这样的类可能包含了对数据库...

    打包hex文件

    在IT行业中,打包是软件发布或开发流程中的一个重要步骤,它通常涉及到将多个文件整合成一个单一的可交付格式,以便于分发、安装或更新。在这个场景中,标题提到的"打包hex文件"指的是将特定的信息,如版本号、文件...

    用VB做的文件打包软件

    标题中的“用VB做的文件打包软件”指的是使用Visual Basic(VB)编程语言开发的一个应用程序,它的功能是将多个文件整合成一个单独的打包文件,便于传输和存储。VB是一种流行的微软开发环境,它允许开发者创建桌面...

    问道PAK打包工具不限功能版.rar

    PAK是许多游戏采用的一种资源打包格式,它可以将多个文件合并成一个单一的文件,便于管理和传输。PAK文件通常包含游戏中的图像、音频、脚本等资源,通过压缩技术减少存储空间,加快加载速度。而问道PAK打包工具就是...

    TS_打包_本地文件_H264_2

    标题中的"TS_打包_本地文件_H264_2"指的是一个关于将本地的H264编码视频文件打包成Transport Stream (TS)格式的示例或项目。H264是一种高效的视频编码标准,广泛应用于数字电视、网络流媒体和高清视频存储等领域。TS...

    精选_FTP文件传输系统_源码打包

    本资源"精选_FTP文件传输系统_源码打包"提供了FTP服务端和客户端的实现代码,是理解FTP工作原理、学习网络编程以及自定义FTP服务的宝贵资料。 FTP协议主要由两部分构成:服务器端和客户端。服务器端负责接收客户端...

Global site tag (gtag.js) - Google Analytics