模拟http协议上传文件的问题(急!!!)
现有一个项目需要通过在在程序内模拟http协议实现文件上传.我首先通过建立与网站的socket连接,然后再构建一个post包模拟用户登录.POST包如下:
POST /merchantuser/operate.do?method=mobLogin HTTP/1.1
Accept:*/*
Accept-Language:zh-cn
Content-Type: application/x-www-form-urlencoded
Accept-Encoding:gzip,deflate
User-Agent:Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; CIBA; MAXTHON 2.0)
Host:test.simp.com:88
Content-Length: 68
userName=haobainian&passWord=haobainian&Submit=+%E7%99%BB+%E5%BD%95+
// 这是网站返回的数据.
HTTP/1.1 200 OK
Server: Apache-Coyote/1.1
Set-Cookie: JSESSIONID=07F456027E0CFAA81AA9F577E4ED98C2; Path=/
Content-Type: text/html;charset=UTF-8
Content-Length: 1352
Date: Thu, 30 Jul 2009 08:12:45 GMT
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>.........--.........</title>
..........................略........................
在这一步服务器返回了登录成功后下一面面的html源码.
接着我构建一个上传文件的POST包:
POST /sd/mobile.do?method=saveGoods HTTP/1.1
Accept:*/*
Referer: http://test.simpbook.com:88/sd/mobile.do?method=saveGoods
Accept-Language:zh-cn
Accept-Encoding:gzip,deflate
User-Agent:Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; CIBA; MAXTHON 2.0)
Host:test.simp.com:88
Content-Type:multipart/form-data;boundary=---------------------------93e41c6e2091
Content-Length: 775
Connection: Keep-Alive
Cookie: JSESSIONID=61EB58C3FA36F0B2C9D7861C840DFBEF
---------------------------93e41c6e2091
Content-Disposition: form-data; name="org.apache.struts.taglib.html.TOKEN"
8ff403e0f016bdb7965a488a3f49c0ff
---------------------------93e41c6e2091
Content-Disposition: form-data; name="name"
test
---------------------------93e41c6e2091
Content-Disposition: form-data; name="bigClassId"
414
---------------------------93e41c6e2091
Content-Disposition: form-data; name="sedClassId"
415
---------------------------93e41c6e2091
Content-Disposition: form-data; name="thrClassId"
441
---------------------------93e41c6e2091
Content-Disposition: form-data; name="salePrice"
333
---------------------------93e41c6e2091
Content-Disposition: form-data; name=mobGoogsPic filename=test.log"
Content-Type: application/octet-stream
1234567890
---------------------------93e41c6e2091--
我将这个包发过去后,服务器那边直接给我返回了登录界面,好像是认为我没有登录.但我通过抓包工具抓IE上传的数据包,好像与我的上传的数据包没多少区别,IE的包如下:
POST /sd/mobile.do?method=saveGoods HTTP/1.1
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, */*
Referer: http://test.simpbook.com:88/sd/mobile.do?method=saveGoods
Accept-Language: zh-cn
Content-Type: multipart/form-data; boundary=---------------------------7d926f1d6066c
UA-CPU: x86
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; CIBA; MAXTHON 2.0)
Host: test.simpbook.com:88
Content-Length: 988
Connection: Keep-Alive
Cache-Control: no-cache
Cookie: JSESSIONID=5F48F6F49399DF1A08F6383D0332BC10
-----------------------------7d926f1d6066c
Content-Disposition: form-data; name="org.apache.struts.taglib.html.TOKEN"
fe55ea4a9be1fed654b5852fa7f7bce5
-----------------------------7d926f1d6066c
Content-Disposition: form-data; name="name"
test
-----------------------------7d926f1d6066c
Content-Disposition: form-data; name="mobGoogsPic"; filename="C:\test.log"
Content-Type: application/octet-stream
1234567890
-----------------------------7d926f1d6066c
Content-Disposition: form-data; name="bigClassId"
414
-----------------------------7d926f1d6066c
Content-Disposition: form-data; name="sedClassId"
415
-----------------------------7d926f1d6066c
Content-Disposition: form-data; name="thrClassId"
441
-----------------------------7d926f1d6066c
Content-Disposition: form-data; name="salePrice"
333
-----------------------------7d926f1d6066c
Content-Disposition: form-data; name="Submit2222"
... ...
-----------------------------7d926f1d6066c--