C#论坛-玄机论坛-C#论坛-玄机宝盒-玄机类库-C#

 找回密码
 关闭注册

QQ登录

只需一步,快速开始

楼主: 君临

[HttpCode] HttpCode框架v6.2 一个有态度的开源.Net Http请求框架

  [复制链接]
njjwdy 发表于 2016-6-29 10:57:52 | 显示全部楼层
POST http://www.baixing.com/api/mobile/user.login/ HTTP/1.1
BAPI-USER-TOKEN:
udid: 382b07c277a4dcb8
APP-VERSION: 7.5.0
BAPI-APP-KEY: api_androidbaixing
BAPI-NONCE: 382b07c277a4dcb8
BAPI-HASH: 31713c34ace51df794b39e288ba87707
User-Agent: com.quanleimu.activity/7.5.0;OPPO;OPPO;OPPO+A53;5.1.1;720x1200;
Content-Type: application/json; charset=utf-8
Content-Length: 62
Host: www.baixing.com
Connection: Keep-Alive
Accept-Encoding: gzip

{"password":"347723","type":"mobile","identity":"18312854037"}

上面是我抓包百姓网安卓app的请求头
[mw_shl_code=csharp,true]   items.Header.Add("APP - VERSION", "7.5.0");
            items.Header.Add("BAPI - APP - KEY", "api_androidbaixing");
            items.Header.Add("BAPI - NONCE", "382b07c277a4dcb8");
            items.Header.Add("BAPI - HASH", "31713c34ace51df794b39e288ba87707");[/mw_shl_code]
我写的上面这片代码提示我
“System.ArgumentException”类型的未经处理的异常在 System.dll 中发生

其他信息: 指定的值含有无效的 HTTP 标头字符。

PS:用苏飞论坛的HttpHelper不会有这个提示,但是 请求的结果也有问题;
用HttpCode  把上面出错的header.add代码去掉之后返回的数据是
{"error":2002,"message":"","ext":null}
这和我使用HttpHepler得到的返回值是一样的,都不对;
使用fiddler code自己生成的代码是可以正常请求的
下面是fiddler生成的代码[mw_shl_code=csharp,true]private void MakeRequests()
{
        HttpWebResponse response;

        if (Request_www_baixing_com(out response))
        {
                response.Close();
        }
}

private bool Request_www_baixing_com(out HttpWebResponse response)
{
        response = null;

        try
        {
                HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://www.baixing.com/api/mobile/user.login/");

                request.Headers.Add("BAPI-USER-TOKEN", @"");
                request.Headers.Add("udid", @"382b07c277a4dcb8");
                request.Headers.Add("APP-VERSION", @"7.5.0");
                request.Headers.Add("BAPI-APP-KEY", @"api_androidbaixing");
                request.Headers.Add("BAPI-NONCE", @"382b07c277a4dcb8");
                request.Headers.Add("BAPI-HASH", @"31713c34ace51df794b39e288ba87707");
                request.UserAgent = "com.quanleimu.activity/7.5.0;OPPO;OPPO;OPPO+A53;5.1.1;720x1200;";
                request.ContentType = "application/json; charset=utf-8";
                request.Headers.Set(HttpRequestHeader.AcceptEncoding, "gzip");

                request.Method = "OST";
                request.ServicePoint.Expect100Continue = false;

                string body = @"{""password"":""347723"",""type"":""mobile"",""identity"":""18312854037""}";
                byte[] postBytes = System.Text.Encoding.UTF8.GetBytes(body);
                request.ContentLength = postBytes.Length;
                Stream stream = request.GetRequestStream();
                stream.Write(postBytes, 0, postBytes.Length);
                stream.Close();

                response = (HttpWebResponse)request.GetResponse();
        }
        catch (WebException e)
        {
                if (e.Status == WebExceptionStatus.ProtocolError) response = (HttpWebResponse)e.Response;
                else return false;
        }
        catch (Exception)
        {
                if(response != null) response.Close();
                return false;
        }

        return true;
}[/mw_shl_code]
希望君临老大解决下,我在另一个论坛问过苏飞老大,但是他没有给出回复,也可能是我问的有问题

真心希望使用君临老大的httpcode,因为有玄机宝盒这样的好工具可以大量节约时间,嘿嘿!!!
玄机论坛-专业的C#交流论坛 交流QQ群: 16885911
帖子内网盘失效后请使用下面地址

http://bbs.msdn5.com/forum.php?mod=viewthread&tid=1218
如果失效请联系站长重新分享
回复 支持 反对

使用道具 举报

njjwdy 发表于 2016-6-29 11:00:35 | 显示全部楼层
njjwdy 发表于 2016-6-29 10:57
POST http://www.baixing.com/api/mobile/user.login/ HTTP/1.1
BAPI-USER-TOKEN:
udid: 382b07c277a4dcb8 ...

我抓包得到的返回值是
{"result":{"user":{"id":"u97293616","name":"用户_88230919","allowChat":true,"createdTime":"1368970340","mobile":"18312854037","image":"http://img5.baixing.net/4631eb6a494ada1ff8c65e00c25f7719.png_180x180","description":"","gender":null,"balance":"0","adPostedCount":0,"adFavedCount":0,"resumeSentCount":0,"resumeReceivedCount":0,"boundAccounts":[],"app_boundAccountsHtml":"","publicReviewer":0,"isDefaultAvatar":true},"token":"ut577228122f1772.95025799"}}

运行fiddler生成的代码,再用fiddler抓包得到的就是这个正常的返回数据!希望老大解决!
玄机论坛-专业的C#交流论坛 交流QQ群: 16885911
帖子内网盘失效后请使用下面地址

http://bbs.msdn5.com/forum.php?mod=viewthread&tid=1218
如果失效请联系站长重新分享
回复 支持 反对

使用道具 举报

njjwdy 发表于 2016-6-29 11:32:21 | 显示全部楼层
njjwdy 发表于 2016-6-29 11:00
我抓包得到的返回值是
{"result":{"user":{"id":"u97293616","name":"用户_88230919","allowChat":true," ...

莫名其妙的重新写了一遍代码就好了!真心醉了,我只想说我也不知道错在哪里!哈哈
玄机论坛-专业的C#交流论坛 交流QQ群: 16885911
帖子内网盘失效后请使用下面地址

http://bbs.msdn5.com/forum.php?mod=viewthread&tid=1218
如果失效请联系站长重新分享
回复 支持 反对

使用道具 举报

njjwdy 发表于 2016-6-29 11:37:59 | 显示全部楼层
请问,玄机宝盒的自定义数据头那里的格式是怎么样的?
还有我要添加多个数据头,应该怎么在玄机宝盒里面写
玄机论坛-专业的C#交流论坛 交流QQ群: 16885911
帖子内网盘失效后请使用下面地址

http://bbs.msdn5.com/forum.php?mod=viewthread&tid=1218
如果失效请联系站长重新分享
回复 支持 反对

使用道具 举报

 楼主| 君临 发表于 2016-6-29 15:23:07 | 显示全部楼层
njjwdy 发表于 2016-6-29 11:37
请问,玄机宝盒的自定义数据头那里的格式是怎么样的?
还有我要添加多个数据头,应该怎么在玄机宝盒里面写 ...

头名称:值
例如:
Accept:image/webp,image/*,*/*;q=0.8
名称与值使用半角冒号分隔即可.
多个头时,一行一个.
玄机论坛-专业的C#交流论坛 交流QQ群: 16885911
帖子内网盘失效后请使用下面地址

http://bbs.msdn5.com/forum.php?mod=viewthread&tid=1218
如果失效请联系站长重新分享
回复 支持 反对

使用道具 举报

 楼主| 君临 发表于 2016-6-29 16:09:00 | 显示全部楼层
njjwdy 发表于 2016-6-29 11:00
我抓包得到的返回值是
{"result":{"user":{"id":"u97293616","name":"用户_88230919","allowChat":true," ...

[mw_shl_code=csharp,true]

       items.Add("BAPI-USER-TOKEN", @"");
       items.Headers.Add("udid", @"382b07c277a4dcb8");
       items.Headers.Add("APP-VERSION", @"7.5.0");
       items.Headers.Add("BAPI-APP-KEY", @"api_androidbaixing");
       items.Headers.Add("BAPI-NONCE", @"382b07c277a4dcb8");
       items.Headers.Add("BAPI-HASH", @"31713c34ace51df794b39e288ba87707");
       items.UserAgent = "com.quanleimu.activity/7.5.0;OPPO;OPPO;OPPO+A53;5.1.1;720x1200;";
       items.ContentType = "application/json; charset=utf-8";[/mw_shl_code]
玄机论坛-专业的C#交流论坛 交流QQ群: 16885911
帖子内网盘失效后请使用下面地址

http://bbs.msdn5.com/forum.php?mod=viewthread&tid=1218
如果失效请联系站长重新分享
回复 支持 反对

使用道具 举报

 楼主| 君临 发表于 2016-6-29 16:16:11 | 显示全部楼层
njjwdy 发表于 2016-6-29 11:32
莫名其妙的重新写了一遍代码就好了!真心醉了,我只想说我也不知道错在哪里!哈哈 ...

[mw_shl_code=csharp,true]

HttpHelpers helper = new HttpHelpers();//请求执行对象
HttpItems items;//请求参数对象
HttpResults hr = new HttpResults();//请求结果对象
string StrCookie="";//设置初始Cookie值
/// <summary>
/// 执行Http请求方法
/// </summary>
public string HttpCodeCreate()
{
string res = string.Empty;//请求结果,请求类型不是图片时有效
string url = "http://www.baixing.com/api/mobile/user.login/";//请求地址
items = new HttpItems();//每次重新初始化请求对象
items.URL = url;//设置请求地址
items.UserAgent = "com.quanleimu.activity/7.5.0;OPPO;OPPO;OPPO+A53;5.1.1;720x1200;";//设置UserAgent
items.Cookie = StrCookie;//设置字符串方式提交cookie
items.Allowautoredirect = true;//设置自动跳转(True为允许跳转) 如需获取跳转后URL 请使用 hr.RedirectUrl
items.ContentType ="application/json; charset=utf-8";//内容类型
items.Header.Add("BAPI-USER-TOKEN: ");//添加自定义头部
items.Header.Add("udid: 382b07c277a4dcb8");//添加自定义头部
items.Header.Add("APP-VERSION: 7.5.0");//添加自定义头部
items.Header.Add("BAPI-APP-KEY: api_androidbaixing");//添加自定义头部
items.Header.Add("BAPI-NONCE: 382b07c277a4dcb8");//添加自定义头部
items.Header.Add("BAPI-HASH: 31713c34ace51df794b39e288ba87707");//添加自定义头部
items.Method = "POST";//设置请求数据方式为Post
items.Postdata ="{\"password\":\"347723\",\"type\":\"mobile\",\"identity\":\"18312854037\"}";;//Post提交的数据
hr = helper.GetHtml(items, ref StrCookie);//提交请求
res = hr.Html;//具体结果
return res;//返回具体结果
}
[/mw_shl_code]
以上代码由玄机宝盒生成

经过宝盒与实地代码测试,结果正确.注意标记红色部分.应该是你之前内容没写对吧.

Have Fun....

1.png
2.png
3.png

4.png


玄机论坛-专业的C#交流论坛 交流QQ群: 16885911
帖子内网盘失效后请使用下面地址

http://bbs.msdn5.com/forum.php?mod=viewthread&tid=1218
如果失效请联系站长重新分享
回复 支持 反对

使用道具 举报

liquid 发表于 2016-6-30 09:21:46 | 显示全部楼层
这个不错,支持
玄机论坛-专业的C#交流论坛 交流QQ群: 16885911
帖子内网盘失效后请使用下面地址

http://bbs.msdn5.com/forum.php?mod=viewthread&tid=1218
如果失效请联系站长重新分享
回复 支持 反对

使用道具 举报

njjwdy 发表于 2016-7-4 19:11:48 | 显示全部楼层
要自己添加的数据头如下
X-Requested-With: XMLHttpRequest
Accept: application/json,text/javascript,*/*;q=0.01
Origin: http://post.58.com

但是在宝盒里面添加好之后  ,点击开始请求却有错误提示,真心不知道哪里错了
错误提示如下
“提示指定的值含有无效的CRLF字符,
参数名:value”
玄机论坛-专业的C#交流论坛 交流QQ群: 16885911
帖子内网盘失效后请使用下面地址

http://bbs.msdn5.com/forum.php?mod=viewthread&tid=1218
如果失效请联系站长重新分享
回复 支持 反对

使用道具 举报

 楼主| 君临 发表于 2016-7-4 20:42:08 | 显示全部楼层
njjwdy 发表于 2016-7-4 19:11
要自己添加的数据头如下
X-Requested-With: XMLHttpRequest
Accept: application/json,text/javascript,*/* ...


要自己添加的数据头如下
X-Requested-With: XMLHttpRequest    这个不用加也行 items.IsAjax = true; 就行了.在宝盒里是勾上那个异步请求

Accept: application/json,text/javascript  这个改下.
Origin 头不需要.错误原因就是你加了低字节字符就那个CRLF字符.
玄机论坛-专业的C#交流论坛 交流QQ群: 16885911
帖子内网盘失效后请使用下面地址

http://bbs.msdn5.com/forum.php?mod=viewthread&tid=1218
如果失效请联系站长重新分享
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 关闭注册

本版积分规则

关闭

站长推荐上一条 /2 下一条

QQ|玄机论坛

GMT+8, 2024-3-28 19:19 , Processed in 0.175150 second(s), 15 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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