首页 新闻 赞助 找找看

Post表单

0
[已解决问题] 解决于 2018-11-21 11:40

当multipart/form-data post表单时 在fidder 中抓到的WebFrom还是body
且值为空

问题补充:

错误截图

正确截图

神来浮云的主页 神来浮云 | 初学一级 | 园豆:127
提问于:2018-11-21 10:23
< >
分享
最佳答案
0

加form标签了么?fildder抓到的包截图,前台代码截图。。你光这样说谁能知道呢

奖励园豆:5
rqx | 菜鸟二级 |园豆:468 | 2018-11-21 10:50

没加form标签 直接按照格式拼写的

神来浮云 | 园豆:127 (初学一级) | 2018-11-21 10:52

@神来浮云: 。。post表单提交是需要form的,只有form标签里的东西才会被post提交上去

rqx | 园豆:468 (菜鸟二级) | 2018-11-21 10:53

没有前台 直接在后台写的

神来浮云 | 园豆:127 (初学一级) | 2018-11-21 10:54

@神来浮云: 直接后端模拟post提交么?用HttpWebRequest ,设置表头,然后post的数据写入试试呢

rqx | 园豆:468 (菜鸟二级) | 2018-11-21 10:59

@rqx: HttpWebRequest req = (HttpWebRequest)WebRequest.Create(url);
req.KeepAlive = true;
req.Method = "POST";
req.AllowAutoRedirect = true;
req.Connection = "keepalive";
req.CookieContainer = CookieContainers;
req.ContentType = "multipart/form-data;-----------------------------7e22ec2a140962";
req.Host = "www.xxx.com";

            req.UserAgent = FireFoxAgent;
            req.Accept = "ttext/html, application/xhtml+xml, image/jxr, */*";
            req.Timeout = 50000;

            if (req.Method == "POST" && data != null)
神来浮云 | 园豆:127 (初学一级) | 2018-11-21 11:00

@rqx: 在客户端发送数据有问题
找不到哪里有问题

神来浮云 | 园豆:127 (初学一级) | 2018-11-21 11:02

@rqx: 登陆的时候是默认模式,
当使用cookie提交multipart/form-data表单,
然后在客户端抓包数据为空,

神来浮云 | 园豆:127 (初学一级) | 2018-11-21 11:06

@神来浮云: https://www.cnblogs.com/liuqiyun/p/6866158.html可以参考一下HttpWebRequest 的post提交,你代码中都没看到写入数据,肯定data为空啊

rqx | 园豆:468 (菜鸟二级) | 2018-11-21 11:08

@rqx:
if (req.Method == "POST" && data != null)
{
ASCIIEncoding encoding = new ASCIIEncoding();
byte[] postBytes = encoding.GetBytes(data);
req.ContentLength = postBytes.Length;
Stream st = req.GetRequestStream();
st.Write(postBytes, 0, postBytes.Length);
st.Close();
}

            System.Net.ServicePointManager.ServerCertificateValidationCallback += (se, cert, chain, sslerror) =>
            {
                return true;
            };

            Encoding myEncoding = Encoding.GetEncoding("UTF-8");

            HttpWebResponse res = (HttpWebResponse)req.GetResponse();
            Stream resst = res.GetResponseStream();
            StreamReader sr = new StreamReader(resst, myEncoding);
            string str = sr.ReadToEnd();

            return str;
神来浮云 | 园豆:127 (初学一级) | 2018-11-21 11:09

@神来浮云: 打断点看看postBytes是否有数据,有的话,在服务端打断点看看sr.ReadToEnd()是否有数据

rqx | 园豆:468 (菜鸟二级) | 2018-11-21 11:14

@rqx:
有数据,
data里面数据看着是没错,但是错就在这里
fidder 抓不到
读出来的事cookie返回的页面

神来浮云 | 园豆:127 (初学一级) | 2018-11-21 11:22

@神来浮云:你客户端和服务器是否在同一台机器上?后端模拟post提交,fidder可能抓不到,换到2台机器试试呢

rqx | 园豆:468 (菜鸟二级) | 2018-11-21 11:26

@rqx:
模拟赶集发帖
不在一个机器

神来浮云 | 园豆:127 (初学一级) | 2018-11-21 11:27

@rqx:
找到问题了
req.ContentType = "multipart/form-data;-----------------------------7e22ec2a140962";
少了一个分隔符boundary=

神来浮云 | 园豆:127 (初学一级) | 2018-11-21 11:33

@神来浮云: 666找到原因就好

rqx | 园豆:468 (菜鸟二级) | 2018-11-21 11:35

@rqx:
在ContentType = "multipart/form-data; boundary=---------------------------7e22ec2a140962";
boundary需要加空格
还是谢谢哥们的热情帮忙
昨天怎么都没找到到,今天兄弟帮忙,多谢了

神来浮云 | 园豆:127 (初学一级) | 2018-11-21 11:38

@神来浮云: 客气了,同样学习一下,以前这块都头部都是复制的代码,今天也学习了

rqx | 园豆:468 (菜鸟二级) | 2018-11-21 11:39
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册