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

苏飞论坛

 找回密码
 马上注册

QQ登录

只需一步,快速开始

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

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

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

查看: 8430|回复: 3

[HttpHelper] 请求切换语系出现The connection was closed unexpectedly

[复制链接]
发表于 2015-7-9 20:14:42 | 显示全部楼层 |阅读模式
1金钱
用一般的HttpWebRequest请求是正常的
代码如下:
[C#] 纯文本查看 复制代码
var cookies = new CookieContainer();

var request = (HttpWebRequest)WebRequest.Create("http://www.maxbet.com/Default.aspx");
request.Referer = "http://www.maxbet.com/";
request.ServicePoint.Expect100Continue = false;
request.CookieContainer = cookies;
request.GetResponse().Close();

var langRequest = (HttpWebRequest)WebRequest.Create("http://www.maxbet.com/ChangeLanguage.aspx");
langRequest.Method = "POST";
langRequest.CookieContainer = cookies;
langRequest.ContentType = "application/x-www-form-urlencoded";
langRequest.Referer = "http://www.maxbet.com/topmenu.aspx";
langRequest.AllowAutoRedirect = false;
            
var postdata = Encoding.Default.GetBytes("hidIsLogin=yes&hidSelLang=cs");
langRequest.ContentLength = postdata.Length;
using (var stream = langRequest.GetRequestStream())
{
    stream.Write(postdata, 0, postdata.Length);
}

Console.WriteLine(new StreamReader(((HttpWebResponse)langRequest.GetResponse()).GetResponseStream()).ReadToEnd());
Console.ReadLine();


打印出:
[C#] 纯文本查看 复制代码
<script> top.window.location.href='./main.aspx?'</script>


换成HttpHelper请求
代码如下:
[C#] 纯文本查看 复制代码
var item = new HttpItem
{
    URL = "http://www.maxbet.com/Default.aspx",
    Referer = "http://www.maxbet.com/",
    Expect100Continue = false
};
var result = (new HttpHelper()).GetHtml(item);

var langItem = new HttpItem
{
    URL = "http://www.maxbet.com/ChangeLanguage.aspx",
    Method = "POST",
    Postdata = "hidIsLogin=yes&hidSelLang=cs",
    Cookie = result.Cookie,
    ContentType = "application/x-www-form-urlencoded",
    Referer = "http://www.maxbet.com/topmenu.aspx",
    Allowautoredirect = false,
};
var langResult = (new HttpHelper()).GetHtml(langItem);

Console.WriteLine(langResult.Html);
Console.ReadLine();


反而出现了下面的错误讯息:
[C#] 纯文本查看 复制代码
The connection was closed unexpectedly


求救!



1. 开通SVIP会员,免费下载本站所有源码,不限次数据,不限时间
2. 加官方QQ群,加官方微信群获取更多资源和帮助
3. 找站长苏飞做网站、商城、CRM、小程序、App、爬虫相关、项目外包等点这里
发表于 2015-7-10 10:59:42 | 显示全部楼层
抓包比较一下发送的有什么不同,应该是参数的问题
回复

使用道具 举报

 楼主| 发表于 2015-7-10 11:13:45 | 显示全部楼层
搞定了
langItem中设定Expect100Continue = false就可以了
但奇怪的是用HttpWebRequest做ChangeLanguage.aspx请求时
明明就不需要设定也可以请求到资料
怪事阿~真是晕了
回复

使用道具 举报

 楼主| 发表于 2015-7-10 11:14:06 | 显示全部楼层
顺便请教
有什么抓包软体可以抓到vs发出的请求?
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-25 05:13

© 2014-2021

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