微信小程序无法访问豆瓣v2 api?

今天在做一个微信小程序的时候,用到豆瓣API v2 一直400 badrequest,
代码如下

const  api = require('../../utils/api.js')

Page({
  data:{
    movies:[],
    hidden:false
  },
  onLoad:function(){
    // this.getMovies("30")
    wx.request({
      url:"https://api.douban.com/v2/movie/coming_soon",
      method:"GET",
      success:function(res){
        console.log(res)
      }
    })
  },
  // getMovies:function(num){
  //   let url = api.searchMovies +`?count=${num}`,
  //       self = this;
  //   wx.request({
  //     url:url,
  //     method:"GET",
  //     success:function(res){
  //       let data = res.subjects
  //       console.log(data)
  //       self.setData({
  //         hidden:true,
  //         movies:data
  //       })
  //     }
  //   })
  // }
})

尝试换了好多个接口地址都报400,然而我用浏览器就可以成功拿到数据了,折腾一下午不知道为什么不行...
返回错误如下
图片描述

阅读 7k
5 个回答

跟你的问题一样,而且设置了'Content-Type': 'application/json',依然显示400 (Bad Request),不知道是否解决?


解决了,参考:http://www.cnblogs.com/bubble...

可能是豆瓣方面对接口的请求来源做了限制,可以从 UA 方面排查一下,用微信小程序的 UA 发起一个请求试试

微信允许小程序跨域并不意味着豆瓣允许明显不正常的 UA 获取资源

你要在公众平台上设置可请求的域名啊

你的问题有点意思:
请你试一下,REQUEST请求头设一下Content-Type参数。

    wx.request({
        url: "https://api.douban.com/v2/movie/coming_soon",
        header: {
            'Content-Type': 'application/json'
        },
        。。。。
        
        

我抓包比较过,有三种情况,有一种情况会被豆瓣400拒绝:
1,HTTP请求不带Content-Type参数,,服务端正常返回。
抓CHROME打开链接时,就是这种情况。

2,HTTP请求带这种形式的: Content-Type: application/json, application/json, 正常。
在微信小程序wx.Request时,这样设参数,就会这样请求,看来会把同名参数值组合一下。

        header: {
            'Content-Type': 'application/json'
        },

3,HTTP请求带这种形式的:Content-Type: application/json, 会收到400
在微信小程序wx.Request时,好象自己不设Content-Type,会带上这种形式参数。


补充说一下,比对过,User-Agent 参数应该无关。

新手上路,请多包涵

header:{

"Content-Type":"json"

},

这样做ide能请求成功,在手机里又不行了,报400的错误

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题