http://www.sufeinet.com/plugin.php?id=keke_group

苏飞论坛

 找回密码
 马上注册

QQ登录

只需一步,快速开始

分布式系统框架(V2.0) 轻松承载百亿数据,千万流量!讨论专区 - 源码下载 - 官方教程

HttpHelper爬虫框架(V2.7-含.netcore) HttpHelper官方出品,爬虫框架讨论区 - 源码下载 - 在线测试和代码生成

HttpHelper爬虫类(V2.0) 开源的爬虫类,支持多种模式和属性 源码 - 代码生成器 - 讨论区 - 教程- 例子

查看: 5602|回复: 4

[咨询站长] httpwebrequest提交form表单添加键值

[复制链接]
发表于 2015-3-19 11:15:02 | 显示全部楼层 |阅读模式
1金钱
后台有个  unit_id的属性 我这边要post一个unit_id的值过去,我下面这样写对不对 得到的返回值是 undefined index:unit_id。。。。。。。。
是我的问题还是后台的问题
String fileToUpload = "f://testDown.gif";
            String uploadUrl = "http://cloud.ibinfen.com/app/index.php ";
            String fileFormName = "file";
            String contenttype = "image/gif";
            string unitId = "unit_id=1";
            string boundary = "----------" + DateTime.Now.Ticks.ToString("x");


            HttpWebRequest webrequest = (HttpWebRequest)WebRequest.Create(uploadUrl);
            webrequest.ContentType = "multipart/form-data; boundary=" + boundary;
            webrequest.Method = "POST";


            StringBuilder sb = new StringBuilder();
            sb.Append("--");
            sb.Append(boundary);
            sb.Append("\r\n");
            sb.Append("Content-Disposition: form-data; name=\"");
            sb.Append(fileFormName);
            sb.Append("\"; filename=\"");
            sb.Append(System.IO.Path.GetFileName(fileToUpload));
            sb.Append("\"");
            sb.Append("\r\n");
            sb.Append("Content-Type: ");
            sb.Append(contenttype);
            sb.Append("\r\n");
            sb.Append("\r\n");

            string postHeader = sb.ToString();
            byte[] postHeaderBytes = Encoding.UTF8.GetBytes(postHeader);
            byte[] uintBytes = Encoding.ASCII.GetBytes(unitId);
            byte[] boundaryBytes = Encoding.ASCII.GetBytes("\r\n--" + boundary + "\r\n");
            FileStream fileStream = new FileStream(fileToUpload, FileMode.Open, FileAccess.Read);
            long length = postHeaderBytes.Length + uintBytes.Length + boundaryBytes.Length;
            webrequest.ContentLength = length;
            Stream requestStream = webrequest.GetRequestStream();
            requestStream.Write(postHeaderBytes, 0, postHeaderBytes.Length);


            MessageBox.Show(webrequest.Headers.ToString());

            byte[] buffer = new Byte[(int)fileStream.Length];
            int bytesRead = 0;
          //  while ((bytesRead = fileStream.Read(buffer, 0, buffer.Length)) != 0)
              //  requestStream.Write(buffer, 0, bytesRead);
            requestStream.Write(uintBytes, 0, uintBytes.Length);
            requestStream.Write(boundaryBytes, 0, boundaryBytes.Length);

            requestStream.Close();

            WebResponse webRespon = webrequest.GetResponse();
            Stream s = webRespon.GetResponseStream();
            StreamReader sr = new StreamReader(s);
            //读取服务器端返回的消息
            String sReturnString = sr.ReadToEnd();
            MessageBox.Show(sReturnString);



1. 开通SVIP会员,免费下载本站所有源码,不限次数据,不限时间
2. 加官方QQ群,加官方微信群获取更多资源和帮助
3. 找站长苏飞做网站、商城、CRM、小程序、App、爬虫相关、项目外包等点这里
 楼主| 发表于 2015-3-19 11:15:59 | 显示全部楼层
自己先顶一下
回复

使用道具 举报

发表于 2015-3-19 12:41:23 | 显示全部楼层
抓包看下通讯过程中,服务器有没有要这个参数。按照通讯包写就好,服务器要什么,给什么。就能通讯正常。
回复

使用道具 举报

发表于 2015-3-19 12:57:39 | 显示全部楼层
直接用的Httphelper类吧。或者框架更好
回复

使用道具 举报

 楼主| 发表于 2015-3-19 13:26:46 | 显示全部楼层
站长苏飞 发表于 2015-3-19 12:57
直接用的Httphelper类吧。或者框架更好

我也这么觉得
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 马上注册

本版积分规则

QQ|手机版|小黑屋|手机版|联系我们|关于我们|广告合作|苏飞论坛 ( 豫ICP备18043678号-2)

GMT+8, 2024-11-24 11:58

© 2014-2021

快速回复 返回顶部 返回列表