苏飞论坛

 找回密码
 马上注册

QQ登录

只需一步,快速开始

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

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

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

查看: 10778|回复: 6

[HttpHelper] 模拟请求微信获取素材列表接口,拿不到想要的结果

[复制链接]
发表于 2016-7-15 10:45:33 | 显示全部楼层 |阅读模式
使用浏览器插件RestClient模拟POST请求,可以拿到返回结果:
1.png

使用HttpHelper拿不到结果,微信返回的结果告知参数出错,是参数没传过去么?
[JavaScript] 纯文本查看 复制代码
            $.ajax({
                type: "POST",
                url: '/NewMedia/PostWeiXinData',
                data: { url: "https://api.weixin.qq.com/cgi-bin/material/batchget_material", Id: "7", type: "news", offset: 0, count: 20 },
                success: function (data) {
                    console.log(data);
                },
                error: function (XMLHttpRequest, textStatus, errorThrown) {
                    console.log(XMLHttpRequest);
                    console.log(textStatus);
                    console.log(errorThrown);
                }
            });


[C#] 纯文本查看 复制代码
        [HttpPost]
        public ContentResult PostWeiXinData(string url, int Id)
        {
            var model = ser_NewMedia_WeiXin.Find(Id);
            if (model == null)
            {
                return Content("");
            }

            string param = string.Empty;
            for (int i = 0; i < Request.Form.Count; i++)
            {
                if (Request.Form.Keys[i].ToLower() != "url" && Request.Form.Keys[i].ToLower() != "id")
                    param += Request.Form.Keys[i] + "=" + Request.Form[i] + "&";
            }
            param += "access_token=" + model.Access_Token + "&";

            HttpHelper http = new HttpHelper();
            HttpItem item = new HttpItem()
            {
                URL = url,
                Method = "post",
                ContentType = "application/x-www-form-urlencoded",
                Postdata = string.IsNullOrEmpty(param) ? null : param.Trim('&')
            };
            HttpResult result = http.GetHtml(item);
            return Content(result.Html);
        }


参数都拼接上了,跟RestClient工具一样,理论上应该能传过去的:
2.png
但是微信接口返回:
{"errcode":40004,"errmsg":"invalid media type hint: [UK3j0286e298]"}

参数type不对,其实是对的,莫非是没post过去?





1. 开通SVIP会员,免费下载本站所有源码,不限次数据,不限时间
2. 加官方QQ群,加官方微信群获取更多资源和帮助
3. 找站长苏飞做网站、商城、CRM、小程序、App、爬虫相关、项目外包等点这里
发表于 2016-7-15 11:18:16 | 显示全部楼层
这个要好好看看接口了,微信SDK这边一直使用Htttphelper没一点问题,或者你下载个最新的试试
 楼主| 发表于 2016-7-15 11:25:54 | 显示全部楼层
站长苏飞 发表于 2016-7-15 11:18
这个要好好看看接口了,微信SDK这边一直使用Htttphelper没一点问题,或者你下载个最新的试试

上次问题排查完之后用的是最新版的httphelper 1.6版本。
参数如下,站长是否有空调用下:
https://api.weixin.qq.com/cgi-bi ... LzW7dN3OLQLRgACAKFL

postData:
{
   "type":"news",
   "offset":0,
   "count":20
}

我上面调用返回结果始终不对,微信错误码显示type不对,其实是对的,莫非是HttpHelper没把type给post过去?
 楼主| 发表于 2016-7-15 11:40:07 | 显示全部楼层
可以了,把postData拼接成了{
   "type":"news",
   "offset":"0",
   "count":"2"
} 这种形式就可以了
同时借助了这个工具:http://tool.sufeinet.com/HttpHelper.aspx
 楼主| 发表于 2016-7-15 11:47:03 | 显示全部楼层
本帖最后由 心态要好 于 2016-7-15 12:01 编辑

请求回来都是乱码,请教如何处理,站长看这里:
http://tool.sufeinet.com/HttpHel ... LzW7dN3OLQLRgACAKFL


-更新:乱码问题也解决了,换成UTF-8就可以了,默认没识别,是乱码
[C#] 纯文本查看 复制代码
HttpItem item = new HttpItem()
            {
                URL = url + "?access_token=" + model.Access_Token,
                Method = "POST",
                Encoding = Encoding.UTF8,
                //ContentType = "application/x-www-form-urlencoded",
                Postdata = param
            };

发表于 2016-7-15 13:26:18 | 显示全部楼层
回复

使用道具 举报

发表于 2016-7-15 14:10:30 | 显示全部楼层
我只是路过打酱油的。
您需要登录后才可以回帖 登录 | 马上注册

本版积分规则

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

GMT+8, 2024-12-29 04:15

© 2014-2021

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