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;
}
}
}
分享到:
相关推荐
MoleBox Pro是这样一个专业的执行文件打包工具,版本为V2.6.5,并且已经进行了汉化处理,方便中国用户使用。这款绿色版意味着它不需要正式的安装过程,下载解压后可以直接运行,减少了用户的操作步骤。 使用MoleBox...
- 添加文件到ZIP:使用`ZipEntry`为每个文件创建一个条目,然后用`ZipOutputStream`的`putNextEntry()`方法打开条目,接着通过`FileInputStream`读取原始文件内容并写入`ZipOutputStream`,最后关闭条目。...
考虑到大型Excel文件可能导致内存溢出或者浏览器下载速度慢,这个库提供了一个巧妙的解决方案,即将Excel文件打包成ZIP格式进行下载。 `laravel-excel-zip`的主要功能在于,它允许开发者在内存管理可控的情况下,将...
《串口调试精灵打包》是一款专为硬件调试设计的实用工具,它简化了串口通信的调试过程,使得用户能够更高效地进行设备交互和数据传输。本文将深入探讨这款软件的功能、应用以及如何进行安装。 串口调试精灵,...
《彩虹岛SPF打包解包源码》是一个专注于处理彩虹岛游戏中的SPF文件的工具。SPF全称为"Server Package File",是游戏开发者为了方便数据管理与传输,将游戏资源进行压缩打包的一种文件格式。这个源码库提供了解包和...
同时,`makecab` 会生成一个 .LOG 文件,其中包含了打包过程的详细信息,方便调试和问题排查。 【标签】:“makecab” `makecab` 的标签强调了它是一个专门用于创建 CAB 文件的工具。在 IT 领域,熟悉如何使用 `...
sis文件打包解包工具是专为Symbian操作系统设计的软件打包和解包工具,它主要服务于SIS和SISX格式的应用程序。SIS和SISX是诺基亚等智能手机在Symbian系统上安装应用的标准格式,类似于Android的APK或iOS的IPA文件。 ...
在文件传输器中,可能使用了TCP套接字,因为它提供了一种可靠的数据传输方式,确保数据在传输过程中的完整性和顺序。 多线程技术可能被用来提高程序的效率。例如,一个线程负责接收文件,另一个线程则处理传输请求...
【基于QT的局域网文件传输】是一种使用C++编程语言和QT库实现的本地网络文件共享技术。...对于想要学习QT和网络编程的初学者,这个项目提供了丰富的实践机会,同时也为网络文件共享提供了一个简单的实现方案。
对于多文件传输,一种方法是将所有文件打包成一个大文件,如ZIP,然后作为单一文件进行传输,接收端再解压。另一种方法是建立多个单独的文件传输连接,每个文件一个连接。在单文件传输的代码基础上,通过循环遍历...
- 在软件安装包制作中,支持多文件打包的功能可以方便地将所有组件整合在一起。 总之,Windows平台下对Zlib库的封装,尤其是支持多文件和多文件夹打包的功能,为开发者提供了强大而便捷的工具,简化了数据压缩的...
文件捆绑是指将多个文件打包到一个单一的文件中,通常是为了方便传输或隐藏组件。在软件开发中,这可能用于将必需的库文件、配置文件或数据文件与主程序一起分发,减少用户安装时的操作步骤。 3. **打包机原理**:...
Java银行系统的class文件打包是将已经编译好的Java源...总之,Java银行系统的class文件打包是一个涉及编译、归档、运行和管理多个环节的过程。正确地打包和运行jar文件,能确保银行系统在不同环境下的稳定性和可靠性。
Modbus RTU(远程终端单元)是Modbus协议的一个变种,它使用串行通信接口。在调试RTU模式时,你需要确保设备的波特率、数据位、停止位和奇偶校验设置正确。调试工具可以模拟主设备或从设备,发送和接收Modbus请求和...
标题中的“能打包数据库文件的类”指的是一个特定的C#类库,它具有将数据库文件集成到项目或软件包中的功能。这类类通常用于自动化处理数据库文件的打包过程,以便于分发、部署或者备份。这样的类可能包含了对数据库...
在IT行业中,打包是软件发布或开发流程中的一个重要步骤,它通常涉及到将多个文件整合成一个单一的可交付格式,以便于分发、安装或更新。在这个场景中,标题提到的"打包hex文件"指的是将特定的信息,如版本号、文件...
标题中的“用VB做的文件打包软件”指的是使用Visual Basic(VB)编程语言开发的一个应用程序,它的功能是将多个文件整合成一个单独的打包文件,便于传输和存储。VB是一种流行的微软开发环境,它允许开发者创建桌面...
PAK是许多游戏采用的一种资源打包格式,它可以将多个文件合并成一个单一的文件,便于管理和传输。PAK文件通常包含游戏中的图像、音频、脚本等资源,通过压缩技术减少存储空间,加快加载速度。而问道PAK打包工具就是...
标题中的"TS_打包_本地文件_H264_2"指的是一个关于将本地的H264编码视频文件打包成Transport Stream (TS)格式的示例或项目。H264是一种高效的视频编码标准,广泛应用于数字电视、网络流媒体和高清视频存储等领域。TS...
本资源"精选_FTP文件传输系统_源码打包"提供了FTP服务端和客户端的实现代码,是理解FTP工作原理、学习网络编程以及自定义FTP服务的宝贵资料。 FTP协议主要由两部分构成:服务器端和客户端。服务器端负责接收客户端...