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

苏飞论坛

 找回密码
 马上注册

QQ登录

只需一步,快速开始

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

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

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

查看: 8031|回复: 7

[咨询站长] 飞哥,请教一下微信web协议的图片上传

[复制链接]
发表于 2017-7-13 08:51:47 | 显示全部楼层 |阅读模式


飞哥,这个是你之前发的原帖。

http://www.sufeinet.com/thread-17938-1-1.html



这个工具我下载了,群发功能我已经实现啦。现在想实现图片发送功能,我在网页上抓包了。可是我本地构造了怎么都不对。。。


这个是我代码:

[C#] 纯文本查看 复制代码
 FileInfo fileInfo = new FileInfo(filepath);
            filesize = fileInfo.Length.ToString();

            Cookie sid = BaseService.GetCookie("wxsid");
            Cookie uin = BaseService.GetCookie("wxuin");
            Cookie m_webwx_data_ticket = BaseService.GetCookie("webwx_data_ticket");
            string m_xmldata = "{\"UploadType\":2,\"BaseRequest\":{\"Uin\":" + uin.Value + ",\"Sid\":\"" + sid.Value + "\",\"Skey\":\"" + LoginService.SKey + "\",\"DeviceID\":\"" + "e828039767636410" + "\"},\"ClientMediaId\":" + GetTimeStamps() + ",\"TotalLen\":" + filesize + ",\"StartPos\":0,\"DataLen\":" + filesize + ",\"MediaType\":4,\"FromUserName\":\"" + me.UserName + "\",\"ToUserName\":\"" + user.UserName + "\",\"FileMd5\":\"" + GetMD5HashFromFile(filepath) + "\"}";

            string Content = "-----------------------------2055292472890"
                      + "\r\n" + "Content-Disposition: form-data; name=\"id\""
                      + "\r\n" + "\r\n" + "WU_FILE_1"

                      + "\r\n" + "-----------------------------2055292472890"
                      + "\r\n" + "Content-Disposition: form-data; name=\"name\""
                      + "\r\n" + "\r\n" + filename



                      + "\r\n" + "-----------------------------2055292472890"
                      + "\r\n" + "Content-Disposition: form-data; name=\"type\""
                      + "\r\n" + "\r\n" + "image/png"

                       + "\r\n" + "-----------------------------2055292472890"
                      + "\r\n" + "Content-Disposition: form-data; name=\"lastModifiedDate\""
                      + "\r\n" + "\r\n" + "Wed Jul 13 2017 " + DateTime.Now.ToString("HH:mm:ss") + " GMT+0800"

                      + "\r\n" + "-----------------------------2055292472890"
                      + "\r\n" + "Content-Disposition: form-data; name=\"size\""
                      + "\r\n" + "\r\n" + filesize


                      + "\r\n" + "-----------------------------2055292472890"
                      + "\r\n" + "Content-Disposition: form-data; name=\"mediatype\""
                      + "\r\n" + "\r\n" + "pic"


                      + "\r\n" + "-----------------------------2055292472890"
                      + "\r\n" + "Content-Disposition: form-data; name=\"uploadmediarequest\""
                      + "\r\n" + "\r\n" + m_xmldata


                      + "\r\n" + "-----------------------------2055292472890"
                      + "\r\n" + "Content-Disposition: form-data; name=\"webwx_data_ticket\""
                      + "\r\n" + "\r\n" + m_webwx_data_ticket.Value


                      + "\r\n" + "-----------------------------2055292472890"
                      + "\r\n" + "Content-Disposition: form-data; name=\"pass_ticket\""
                      + "\r\n" + "\r\n" + HttpUtility.UrlDecode(LoginService.Pass_Ticket)

                      + "\r\n" + "-----------------------------2055292472890"
                      + "\r\n" + "Content-Disposition: form-data; name=\"filename\"; filename=\"" + filename + "\""
                      + "\r\n" + "Content-Type:image/png\r\n\r\n";

            File.WriteAllText(System.Environment.CurrentDirectory + "\\11.txt", Content, Encoding.GetEncoding("gb2312"));
            string endstr =   "-----------------------------2055292472890--\r\n\r\n";
            byte[] picbuffer = System.Text.Encoding.UTF8.GetBytes(File.ReadAllText("f:\\1234.png", Encoding.UTF8));
            byte[] contentbuffer = System.Text.Encoding.UTF8.GetBytes(Content);
            byte[] buffer4 = System.Text.Encoding.UTF8.GetBytes(endstr);
            byte[] endcode = ComposeArrays(ComposeArrays(contentbuffer, picbuffer), buffer4);
            string sss = Encoding.UTF8.GetString(endcode);
            File.WriteAllText(System.Environment.CurrentDirectory + "\\11.txt", sss, Encoding.GetEncoding("gb2312"));
            byte[] bytes = BaseService.SendPostRequests("https://file.wx.qq.com/cgi-bin/mmwebwx-bin/webwxuploadmedia?f=json", sss, picbuffer);
            string send_result = Encoding.UTF8.GetString(bytes);

            return send_result;





参数什么的我和抓包的都比对了。。没问题 但是就是不返回资源id

每次都是返回如下:

[C#] 纯文本查看 复制代码
"{\n\"BaseResponse\": {\n\"Ret\": 0,\n\"ErrMsg\": \"\"\n}\n,\n\"MediaId\": \"\",\n\"StartPos\": 6285,\n\"CDNThumbImgHeight\": 0,\n\"CDNThumbImgWidth\": 0\n}\n"



按理说 Ret = 0是成功了。但是MediaId  却是空。昨天研究了一天都没搞定。。。发上来让大家看看。

大牛们搞过的指点一下呀~感谢感谢~



1. 开通SVIP会员,免费下载本站所有源码,不限次数据,不限时间
2. 加官方QQ群,加官方微信群获取更多资源和帮助
3. 找站长苏飞做网站、商城、CRM、小程序、App、爬虫相关、项目外包等点这里
发表于 2017-7-13 09:01:32 | 显示全部楼层
目测是上传成功,但保存不成功,多半是因为格式不对,或者不符合要求,将你的文件直接通过微信Web上传看是否能成功
 楼主| 发表于 2017-7-13 09:03:07 | 显示全部楼层
站长苏飞 发表于 2017-7-13 09:01
目测是上传成功,但保存不成功,多半是因为格式不对,或者不符合要求,将你的文件直接通过微信Web上传看是 ...

我抓包和本地测试的是同一张图片。。但是就是不返回资源id 啥子情况.....
发表于 2017-7-13 11:04:25 | 显示全部楼层
传图片的没做过,怀疑还是参数,或者是权限类问题,你确定完全一样,包括Header,以及Cookie,等信息
发表于 2017-7-15 21:40:59 | 显示全部楼层
加我QQ 我给你 11436957
发表于 2017-7-21 10:05:34 | 显示全部楼层
请教一下微信web协议的图片上传,这个怎么写,给个例子 谢谢
发表于 2017-8-23 10:05:51 | 显示全部楼层
楼主你在吗?源码可以发一份给我吗,我现在也在做这个
发表于 2017-8-23 10:06:14 | 显示全部楼层
lincn 发表于 2017-8-23 10:05
楼主你在吗?源码可以发一份给我吗,我现在也在做这个

可以有偿,我下载不了
您需要登录后才可以回帖 登录 | 马上注册

本版积分规则

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

GMT+8, 2024-11-22 18:46

© 2014-2021

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