请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

返回码44003!请教一下

在获取图文消息的时候response回来的body是空的。没有media_Id老师.每日调用接口有上线弄了几天了都。

https://img1.sycdn.imooc.com/szimg//58098080000172c705660121.jpg

58098067000126bb04310063.jpg

Wechat.prototype.uploadMaterial = function(type, material,permanent){
    var that = this;
    var form = {}
    var uploadUrl = api.temporary.upload
    if(permanent){
        uploadUrl = api.permanent.upload
        _.extend(form,permanent)//form兼容所有的上传类型
    }

    if(type ==='pic'){
        uploadUrl = api.permanent.uploadNewsPic        
    }

    if(type ==='news'){
        uploadUrl = api.permanent.uploadNews    

    }else{
        form.media = fs.createReadStream(material)
    }
//如果传进来的是图文那么material是数组 如果传进来是视频图片等 那么material 传进来的路径

    return new Promise(function(resolve,reject){
            that
            .fetchAccessToken()//拿到token
            .then(function(data){
                var url = uploadUrl +'access_token='+data.access_token
                if(!permanent){
                    url += '&type='+ type
                }else{
                    form.access_token = data.access_token
                }

                var options = {
                    method:"POST",
                    url:url,
                    json:true,

                }

                if(type ==='news'){
                    options.body = form

                }else{
                    options.formData = form
                }
                    console.log(options)
                request(options).then(function(response){
                    console.log(response)

                    var _data = response.body;
/*                    console.log(response)*/
/*                    console.log(_data)*/
                    if(_data){
                        
                        resolve(_data)
                    }
                    else{
                        throw new Error('Upload material fails')
                    }
                })
                .catch(function(err){
                    reject(err)
                })
                
            })

    })
}


正在回答 回答被采纳积分+3

5回答

Scott 2016-10-22 10:13:23

你比对下代码看有没有哪里有问题:


Wechat.prototype.uploadMaterial = function(type, material, permanent) {
  var that = this
  var form = {}
  var uploadUrl = api.temporary.upload
  if (permanent) {
    uploadUrl = api.permanent.upload
    _.extend(form, permanent)
  }
  if (type === 'pic') {
    uploadUrl = api.permanent.uploadNewsPic
  }
  if (type === 'news') {
    uploadUrl = api.permanent.uploadNews
    form = material
  }
  else {
    form.media = fs.createReadStream(material)
  }
  return new Promise(function(resolve, reject) {
    that
      .fetchAccessToken()
      .then(function(data) {
        var url = uploadUrl + 'access_token=' + data.access_token
        if (!permanent) {
          url += '&type=' + type
        }
        else {
          form.access_token = data.access_token
        }
        var options = {
          method: 'POST',
          url: url,
          json: true
        }
        if (type === 'news') {
          options.body = form
        }
        else {
          options.formData = form
        }
        request(options).then(function(response) {
          var _data = response.body
          if (_data) {
            resolve(_data)
          }
          else {
            throw new Error('Upload material fails')
          }
        })
        .catch(function(err) {
          reject(err)
        })
      })
  })
}


0 回复 有任何疑惑可以回复我~
  • 提问者 一直都在路上 #1
    老师,我用你的代码直接跑也运行不起来。还可能是什么原因呢?
    回复 有任何疑惑可以回复我~ 2016-10-22 10:43:50
  • 提问者 一直都在路上 #2
    估计有可能是映射的原因老师,我用国外的Ngrok 连回复1234都出不来了= =
    回复 有任何疑惑可以回复我~ 2016-10-22 10:55:33
  • Scott 回复 提问者 一直都在路上 #3
    有可能是映射问题,你试试用花生壳研究下同样的代码能不能跑起来
    回复 有任何疑惑可以回复我~ 2016-10-22 19:26:28
Scott 2016-10-21 21:54:13

是挺奇怪,createtime 为空不知道影响到没,把时间戳加上试试

0 回复 有任何疑惑可以回复我~
  • 提问者 一直都在路上 #1
    带上createime 也不行。 老师我代码 有问题吗? 是不是应该把
      if(type ==='pic'){
            uploadUrl = api.permanent.uploadNewsPic        
        }
    
        if(type ==='news'){
            uploadUrl = api.permanent.uploadNews    
    
        }
    放在if (permannet){} 里面?
    回复 有任何疑惑可以回复我~ 2016-10-21 23:22:14
  • 提问者 一直都在路上 #2
    permanent
    回复 有任何疑惑可以回复我~ 2016-10-21 23:22:52
提问者 一直都在路上 2016-10-22 10:48:18

else if(content === '5'){
            var data = yield wechatApi.uploadMaterial('image',path.join(__dirname, './shopCar.jpg' ))
            reply = {
                type:'image',
                mediaId:data.media_id
            }
            console.log(reply)

        }

引用应该没问题吧 老师



0 回复 有任何疑惑可以回复我~
提问者 一直都在路上 2016-10-21 12:27:58

https://img1.sycdn.imooc.com/szimg//5809991d0001243807300415.jpg

这是上传临时图片返回的XML并没有问题 难道是服务器傻*了?

0 回复 有任何疑惑可以回复我~
提问者 一直都在路上 2016-10-21 11:09:20

而且改了uploadMaterial 之前上传零食素材的都用不了了。不知道哪里错了

0 回复 有任何疑惑可以回复我~
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信