解決微信小程序調豆瓣電影(小說)api時顯示400、403問題
以獲取豆瓣熱映電影為例:
請求接口:
我這里使用的是uni-app框架(多端發布的一款框架,基于vue語法,正在踩坑中)
onLoad() { uni.request({ url: 'http://api.douban.com/v2/movie/in_theaters', method: 'GET', data: {}, success: res => { console.log(res) }, fail: () => {}, complete: () => {} }); },
來看看返回了什么:
原因是豆瓣那邊設置了對小程序的訪問權限
解決辦法總是有的!
1.設置nginx代理:
在nginx.conf加入以下配置:
location /v2/{ proxy_store off; proxy_redirect off;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;proxy_set_header X-Real-IP $remote_addr; proxy_set_header Referer 'no-referrer-when-downgrade'; proxy_set_header User-Agent 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.94 Safari/537.36'; proxy_connect_timeout 600;proxy_read_timeout 600;proxy_send_timeout 600;proxy_pass https://api.douban.com/v2/; }
重啟nginx
修改小程序那邊的請求路徑為http://localhost/v2/movie/top2502.
2.更改官方域名:
替換官方給的域名http://api.douban.com
為https://douban.uieee.com
,https://douban.uieee.com
是某大佬搭建的代理,相當于別人替你去做了方法一的事情,你只需要搬過來用就行了。
似乎可以了~我們來看看現在獲取到了data沒有
還差一步,修改請求頭
header:{ "Content-Type":"application/xml" },
再來看看吧~
獲取一下杭州的熱映電影的前四個是什么吧:
onLoad() { uni.request({ url: 'https://douban.uieee.com/v2/movie/in_theaters', method: 'GET', header:{ "Content-Type":"application/xml" }, data: { start: 0, count: 4, city: '杭州' }, success: res => { console.log(res) }, fail: () => {}, complete: () => {} }); },
附上豆瓣電影的常用接口:
1.獲取正在熱映的電影:https://douban.uieee.com/v2/movie/in_theaters
訪問參數:
start : 數據的開始項
count:單頁條數
city:城市
2.獲取電影Top250:https://douban.uieee.com/v2/movie/top250
訪問參數:
start : 數據的開始項
count:單頁條數
3.獲取即將上映電影:https://douban.uieee.com/v2/movie/coming_soon
訪問參數:
start : 數據的開始項
count:單頁條數
4.電影搜索:https://douban.uieee.com/v2/movie/search
訪問參數:
start : 數據的開始項
count:單頁條數
q:要搜索的電影關鍵字
tag:要搜索的電影的標簽
5.電影詳情:https://douban.uieee.com/v2/movie/subject/:id
訪問參數:電影id
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持武林網。
新聞熱點
疑難解答