苏飞论坛

 找回密码
 马上注册

QQ登录

只需一步,快速开始

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

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

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

查看: 9102|回复: 10

[求助] HttpHelper 请求出错!!!

[复制链接]
发表于 2013-11-1 12:44:20 | 显示全部楼层 |阅读模式
[qq]353579547[/qq]
[code=csharp]string result = "";
            HttpHelper httpHelper = new HttpHelper();
            HttpItem item = new HttpItem();
            item.URL = url;
            item.Accept = "*/*";
            item.ContentType = "application/json;charset=UTF-8";
            item.Method = "POST";//请求方式 Get  Post
            item.IsToLower = false;////得到的HTML代码是否转成小写     可选项默认转小写
            item.ReadWriteTimeout = 30000;//写入Post数据超时时间     可选项默认为30000
            item.PostDataType = PostDataType.String;//默认为传入String类型,也可以设置PostDataType.Byte传入Byte类型数据
            item.Postdata = postData;//Post数据     可选项GET时不需要写
            item.ResultType = ResultType.String;//返回数据类型,是Byte还是String
            item.UserAgent = "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0)";//用户的浏览器类型,版本,操作系统     可选项有默认值
            //item.item.CerPath = "d:\\123.cer";//证书绝对路径     可选项不需要证书时可以不写这个参数
            //item.ProxyIp = "192.168.1.105:8015",//代理服务器ID 端口可以直接加到后面以:分开就行了    可选项 不需要代理 时可以不设置这三个参数
            //item.ProxyPwd = "123456",//代理服务器密码     可选项
            //item.ProxyUserName = "administrator",//代理服务器账户名     可选项
            HttpResult httpResult = httpHelper.GetHtml(item);
            if (httpResult.StatusCode == HttpStatusCode.OK)
            {
                result = httpResult.Html;

            }
            return result;[/code]

if (httpResult.StatusCode == HttpStatusCode.OK)
            {
                result = httpResult.Html;

            }

有时 httpResult.StatusCode 返回结果 是0  而不是HttpStatusCode 的枚举值。
这是为什么啊!


1. 开通SVIP会员,免费下载本站所有源码,不限次数据,不限时间
2. 加官方QQ群,加官方微信群获取更多资源和帮助
3. 找站长苏飞做网站、商城、CRM、小程序、App、爬虫相关、项目外包等点这里
发表于 2013-11-1 13:03:16 | 显示全部楼层
枚举值就是Int类型啊,说明返回的是正确的,
 楼主| 发表于 2013-11-1 13:09:43 | 显示全部楼层
站长苏飞 发表于 2013-11-1 13:03
枚举值就是Int类型啊,说明返回的是正确的,

这是所有的 http 返回值
 楼主| 发表于 2013-11-1 13:10:25 | 显示全部楼层
站长苏飞 发表于 2013-11-1 13:03
枚举值就是Int类型啊,说明返回的是正确的,

这是所有的http返回值

[code=csharp]Continue = 100,
    SwitchingProtocols = 101,
    OK = 200,
    Created = 201,
    Accepted = 202,
    NonAuthoritativeInformation = 203,
    NoContent = 204,
    ResetContent = 205,
    PartialContent = 206,
    Ambiguous = 300,
    MultipleChoices = 300,
    Moved = 301,
    MovedPermanently = 301,
    Found = 302,
    Redirect = 302,
    RedirectMethod = 303,
    SeeOther = 303,
    NotModified = 304,
    UseProxy = 305,
    Unused = 306,
    RedirectKeepVerb = 307,
    TemporaryRedirect = 307,
    BadRequest = 400,
    Unauthorized = 401,
    PaymentRequired = 402,
    Forbidden = 403,
    NotFound = 404,
    MethodNotAllowed = 405,
    NotAcceptable = 406,
    ProxyAuthenticationRequired = 407,
    RequestTimeout = 408,
    Conflict = 409,
    Gone = 410,
    LengthRequired = 411,
    PreconditionFailed = 412,
    RequestEntityTooLarge = 413,
    RequestUriTooLong = 414,
    UnsupportedMediaType = 415,
    RequestedRangeNotSatisfiable = 416,
    ExpectationFailed = 417,
    InternalServerError = 500,
    NotImplemented = 501,
    BadGateway = 502,
    ServiceUnavailable = 503,
    GatewayTimeout = 504,
    HttpVersionNotSupported = 505,[/code]

这里面也没有返回 0 这个值啊!!!
发表于 2013-11-1 13:18:03 | 显示全部楼层
0应该是异常了,没有只能说枚举里没有,并不表示不能这么返回,你调试看看吧。看看在赋值之前是不是这个值,我估计返回异常或者是空时就是0
 楼主| 发表于 2013-11-1 13:21:58 | 显示全部楼层
站长苏飞 发表于 2013-11-1 13:18
0应该是异常了,没有只能说枚举里没有,并不表示不能这么返回,你调试看看吧。看看在赋值之前是不是这个值 ...

基础连接已经关闭: 接收时发生错误。

如果提示这个错误!httpItem中还要设置什么参数吗?
发表于 2013-11-1 13:22:51 | 显示全部楼层
什麽才是王道 发表于 2013-11-1 13:21
基础连接已经关闭: 接收时发生错误。

如果提示这个错误!httpItem中还要设置什么参数吗?

不清楚,要看你的抓包才知道
 楼主| 发表于 2013-11-1 13:26:26 | 显示全部楼层
站长苏飞 发表于 2013-11-1 13:22
不清楚,要看你的抓包才知道

这个不是抓包,而是请求api接口,对方返回json数据!
不过,我还是自己调试看看把!
谢谢!!!
发表于 2013-11-1 13:29:46 | 显示全部楼层
item.Accept 这个参数不要设置,使用默认的
如果你那边的Api是一般处理程序,你要把ContentType 这个参数设置成application/x-www-form-urlencoded 这样才行
 楼主| 发表于 2013-11-1 15:10:00 | 显示全部楼层
站长苏飞 发表于 2013-11-1 13:29
item.Accept 这个参数不要设置,使用默认的
如果你那边的Api是一般处理程序,你要把ContentType 这个参数 ...

API接口 JAVA写的!而且他们要求ContentType 必须为 application/json;charset=UTF-8  这个否则根本请求不到!  Accept 不要设置!这个我可以试试!

我自己写了一个最简单的!HttpWebRequest 请求!也是时不时的报错!基础连接已经关闭: 接收时发生错误。


我已经我们 api 接口的提供组 去提这个问题了!!!
您需要登录后才可以回帖 登录 | 马上注册

本版积分规则

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

GMT+8, 2024-12-23 14:18

© 2014-2021

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