我们暂且不说如何去模拟数据,通过一个简单的form看看当请求发生时,客户端提交了什么样的数据给服务端。
下面是一个简单的html form,两个文本输入框,一个文件上传(这里我选择一张图片),注意有文件上传的form的enctype属性。
复制代码 代码如下:
<form action="sql.aspx" method="post" enctype="multipart/form-data">
<input id="Text1" name="content" type="text" /><br />
<input id="Text2" name="uploadImg" type="text" /><br />
<input id="File1" type="file" name="image0" /><br />
<input id="Submit1" type="submit" value="submit" />
</form>
为了查看表单提交时,向服务端post了什么数据,这里我使用Fiddler来查看。Fiddler确实是个不错的工具,注意当url主机地址是localhost时Fiddler捕获不到,需要再localhost后加一点(.)即可,打开Fiddler,浏览带上面form的page,输入数据提交,此时在Fiddler中可看到post的数据了。下面是一部份数据的截图。
分析其中的数据不难得出,一个表单中的数据域(input type="text")对应的格式为
-----------------------------7da119c1004a6
Content-Disposition: form-data; name="content"
this is a txt value
一个文件(input type="file")对应的格式为(通常为表单最后一个参数)
-----------------------------7da119c1004a6
Content-Disposition: form-data; name="image0"; filename="E:\CAI\875.jpg"
Content-Type: image/pjpeg
[文件内容]
结尾处是-----------------------------7da119c1004a6--
有了上面的数据做参考,按照其格式组织数据,post到服务端,同样可以达到html form提交的效果。要特别注意其格式:如回车换行,差一个都可能得不到正确的响应,还有请求的Content-Length一定计算对。下面是一个参考:
代码
复制代码 代码如下:
public string POSTfile(string v1,string v2, string file)
{
string boundary = "---------------------------" + DateTime.Now.Ticks.ToString("x");
//请求
WebRequest req = WebRequest.Create(@"http://localhost.:4944/WebSite1/getfile.aspx");
req.Method = "POST";
req.ContentType = "multipart/form-data; boundary=" + boundary;
//组织表单数据
StringBuilder sb = new StringBuilder();
sb.Append("--" + boundary);
sb.Append("\r\n");
sb.Append("Content-Disposition: form-data; name=\"content\"");
sb.Append("\r\n\r\n");
sb.Append(v1);
sb.Append("\r\n");
sb.Append("--" + boundary);
sb.Append("\r\n");
sb.Append("Content-Disposition: form-data; name=\"uploadImg\"");
sb.Append("\r\n\r\n");
sb.Append("v2");
sb.Append("\r\n");
sb.Append("--" + boundary);
sb.Append("\r\n");
sb.Append("Content-Disposition: form-data; name=\"image0\"; filename=\"e:\\a.jpg\"");
sb.Append("\r\n");
sb.Append("Content-Type: image/pjpeg");
sb.Append("\r\n\r\n");
string head = sb.ToString();
byte[] form_data = Encoding.UTF8.GetBytes(head);
//结尾
byte[] foot_data = Encoding.UTF8.GetBytes("\r\n--" + boundary + "--\r\n");
//文件
FileStream fileStream = new FileStream(file, FileMode.Open, FileAccess.Read);
//post总长度
long length = form_data.Length + fileStream.Length + foot_data.Length;
req.ContentLength = length;
Stream requestStream = req.GetRequestStream();
//发送表单参数
requestStream.Write(form_data, 0, form_data.Length);
//文件内容
byte[] buffer = new Byte[checked((uint)Math.Min(4096, (int)fileStream.Length))];
int bytesRead = 0;
while ((bytesRead = fileStream.Read(buffer, 0, buffer.Length)) != 0)
requestStream.Write(buffer, 0, bytesRead);
//结尾
requestStream.Write(foot_data, 0, foot_data.Length);
requestStream.Close();
//响应
WebResponse pos = req.GetResponse();
StreamReader sr = new StreamReader(pos.GetResponseStream(), Encoding.UTF8);
string html = sr.ReadToEnd().Trim();
sr.Close();
if (pos != null)
{
pos.Close();
pos = null;
}
if (req != null)
{
req = null;
}
return html;
}
相关推荐:
OpenAI无法验证支付方式?解决方案与常见问题解析,你好月光ai
线上AI写作免费一键生成,轻松提升写作效率,解放创作思维
AI免费写文章生成器高效写作新革命
ChatGPT在处理文本时可能无法完全理解上下文的复杂性,肌肉ai
为什么越来越多的人选择在知乎发布文章?这里面的机会你可能还没发现!,潍坊关键词排名提升
ChatGPT198元永久会员,开启智慧之门,体验AI的极致服务!,老孙教ai
为什么做seo的人很少,为了什么做seo ,ai不负你
seo自己做什么,自己做seo需要花钱吗 ,ai850775
SEO数量-如何提升你的网站排名与流量?,射阳seo优化五星服务
如何识别文章是否由AI写作:技巧与方法解析
ChatGPT怎么打不开了?解决办法,轻松恢复畅通无阻!,ai订酒店ai对话
ChatGPT网页打不开?快来看看这些解决办法,轻松恢复正常访问!,ai金色包装
摘要AI生成:高效工作的新时代利器
SEO需要什么语音,seo需要考虑什么 ,学生作业ai
ChatGPT点不了?背后的真相与解决方法,ai.520523
SEO代做:让你的企业轻松登顶搜索引擎,快速提升曝光率,seo 提高注册量
“多网建站”助力企业跨越发展,开启全新数字化时代,海南网站优化电池
seo深度优化插件是什么,深度优化手机软件 ,ai的缩写
SEO搜外:全球搜索引擎优化的秘密武器,如何选择网站建设类型呢
SEO优化与SEM广告:提升品牌曝光与流量的双重利器,ai接回头
ChatGPT为什么页面下拉不了?问题解析与解决方案,ai对准
AI提取文章重要内容:让信息抓取更高效、更精准,松鼠ai 教学
ChatGPT诞生背景:人工智能如何突破语言的边界,ai辅助市场调研
SEO优化顾问:让您的网站脱颖而出的秘密武器,ai ps 群
SEO表格:优化网站排名的秘密武器,大数据推广营销费用多少
ChatGPT为什么访问不了了?了解背后的原因与解决方法,AI怎么拖入路径
ChatGPT付款银行卡被拒绝?解决方案全解析!,小发猫ai智能写作查重能过吗
seo要什么条件,seo都需要做什么 ,交互ai求职
SEO快速提升SEO排名的有效策略:让你的网页飞跃搜索引擎,ai调色食物
AI做文章:引领智能创作的未来
ChatGPT无法加载?检查您的网络设置并尝试重启,轻松解决常见问题!,ai招生广告设计
在线AI文章生成器开启智能创作新时代
SEO优化排名原理解析:如何提高网站排名,实现精准流量获取,奥迪ai售价
seo网站通过什么软件,网站seo软件哪个 ,战团ai
SEO而且:打造高效网站流量增长的秘密武器,滨江网站推广营销
ChatGPT,您的银行卡被拒绝了?别慌,这些方法帮您快速解决问题!,ai给那个标声调
ChatGPT3.5最新版:智能对话新纪元,带你进入AI的未来世界,ai苔藓生长
seo资源指的是什么,seo资料 ,绿眼AI
ChatGPT服务异常:为何影响到你的工作和生活?如何有效解决?,ai怎么保持圆角不变
亚马逊产品seo什么意思,亚马逊平台产品专业术语 ,小新同学ai
人工AI软件的未来:智能时代的创新驱动力
SEO找词:如何精准找到高效关键词,提升排名和流量,河源网站优化平台
AI助手Stut:智能时代的创新引擎,开启未来工作新篇章,ai对ai的格斗游戏
为什么网站要做seo,网站做seo的目的是什么 ,ai初选
SEO客服:如何提升客户体验与业务转化的双赢策略,鄂州网站建设公司教程
SEO场景下的数字营销:如何通过精准优化提升网站流量,陕西融发建设集团网站
SEO引擎优化方法-让你的网站流量暴增的实战指南,ai智慧树
用AI批量下载工具,高效管理你的文件和资源
在线AI文章生成:内容创作新革命
seo软文用什么论坛,seo软文是什么意思 ,爱字幕的AI变脸不见了