梦网SSO

我只是只小鸟,但我想飞的更高!

原创 实现使用HTTP协议发送multipart/form-data类型的HTTP表单收藏

新一篇: CSDN小助手V3.0 | 旧一篇: 一个轻量级正则辅助工具。

     .Net FrameWork对HTTP协议做了很好的封装,使我们使用HTTP协议的时候变的非常简单,但是.Net只能使用application/x-www-form-urlencoded方式来POST数据,使用System.Net.WebClient上传递文件(multipart/form-data方式)只能上传单个,而我们在实际中文件和表单混合提交、多文件上传的需求也很多,这些都是目前的.net framework不支持的。这些需求都是以multipart/form-data方式发送数据的,也就是说目前.net对multipart/form-data方式提交表单支持性并不好,本文所列的源代码就是就是解决这个问题。

multipart/form-data方式HTTP协议大致如下,红色是额外加上的:

POST /msb/WebForm1.aspx HTTP/1.1
Connection: Keep-Alive
Content-Length: 458
Content-Type: multipart/form-data; boundary=-----------------------------7d6bb34502ce[上传方式,边界]
Accept: */*
Expect: 100-continue
Host: localhost
Referer: http://mtv.1ting.com/
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)

-------------------------------7d6bb34502ce[边界这里开头多了2个中划线]
Content-Disposition: form-data; name="key1[表单域名]"

ffffffffffffffffffffffffffffffffffffffffffffffffffffff[表单域值]
-------------------------------7d6bb34502ce[边界这里开头多了2个中划线]
Content-Disposition: form-data; name="file[文件类型表单域名]"; filename="d:\1.rar[文件名]"
Content-Type: application/x-msdownload[文件类型]

[文件内容]
-------------------------------7d6bb34502ce--[最后一个边界,开头和结尾都多了2个中划线]

这里是源代码:http://blog.csdn.net/images/blog_csdn_net/Qqwwee_Com/HttpProc.gif

 调用代码:

        Dim a As New ArrayList
        a.Add(New EntityFormValue("key1", "key1")) '表单
        a.Add(New EntityFormValue("key2", "value2")) '表单
        a.Add(New EntityFormFile("file", "d:\1.rar")) '文件
        Dim http As New HttpProc("http://localhost/msb/WebForm1.aspx")
        Console.WriteLine(http.PostMultipartForm(a))

关于HttpProc

http是我在.net frameWork支持http协议基础上拓展的一个类,用来简化http的GET和POST操作,可以满足日常大部分的 HTTP处理,这在我的csdn小助手各版本里面均有体现。

下面是一个模拟登陆,可以看到代码已经很简洁了:

        Dim Url As String = "http://localhost/login.aspx"‘地址
        Dim postDate As String = "username=user123&passWork=123456"
        ‘用户名和密码
        Dim Res As String = ""
        Dim http As New HttpProc(Url)
        Res = http.Proc'得到响应

 本文原始发表地址:http://blog.csdn.net/Qqwwee_Com/archive/2006/04/08/655711.aspx(转贴请保留)

发表于 @ 2006年04月08日 22:51:00|评论(loading...)|编辑

新一篇: CSDN小助手V3.0 | 旧一篇: 一个轻量级正则辅助工具。

评论

#luwei 发表于2006-04-08 22:55:00  IP: 218.18.189.*
高手啊。
#qlhycf 发表于2007-07-23 10:31:53  IP: 58.82.224.*
兄第,我也遇到这样的问题,你的源码打不开啊
#quren 发表于2007-12-03 11:13:50  IP: 218.78.220.*
高手啊,你的源码打不开,麻烦你发到我的邮箱里好吗?
quren@163.com
#hujun614 发表于2008-05-23 14:24:50  IP: 125.85.49.*
高手,下面这个问题需要你去解答,有空去看看吧
http://topic.csdn.net/u/20080523/14/65efafd3-5e20-478b-ae9a-c6f0490d11e6.html
发表评论  


当前用户设置只有注册用户才能发表评论。如果你没有登录,请点击登录
Csdn Blog version 3.1a
Copyright © Qqwwee_COM