微信可以通过调取API赋予小程序强大的功能,例如调取百度翻译API可以用小程序翻译,调取高德地图API可以进行定位,而通过豆瓣api可以获取很多电影、书籍等的数据信息。但微信小程序请求豆瓣api,会出现403问题导致被豆瓣拒绝。具体的问题和解决方案如下:
小程序请求代码:
onLoad: function (options) {
this.getMoviesData(\'https://api.douban.com/v2/book/1220562\')
},
getMoviesData:function(url){
wx.request({
url: url,
data: {},
method: \'GET\',
header: {\'content-type\': \'application/json\' },
success: function (res){
console.log(res)
},
fail: function () {
console.log(\'fail\')
},
})
}
错误的类型
解决
1、使用Nginx
首先下载Nginx
解压
打开解压文件nginx-1.13.12(这是你的解压文件名)/conf/nginx.conf
在文件中找到server {},在server {}下添加
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.94Safari/537.36\';
proxy_connect_timeout 600;
proxy_read_timeout 600;
proxy_send_timeout 600;
proxy_pass https://api.douban.com/v2/;
}
重点是更改 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.94Safari/537.36\';
以此来代替小程序去请求豆瓣,然后把数据返回给小程序。
更改配置后保存,在nginx.exe 文件夹下打开命令窗口,输入startnginx,启动后每次修改配置,可以使用nginx -s reload
状态码4xx客户端错误,400Bad Request 意思是我们发送了一个错误的请求。经过尝试发现,把header请求改成 header: { \'content-type\': \'application/xml\' }就可以了。额。。。明明获取的数据就是json,。。。可能是小程序后台对header做了限制。
正确的代码:
onLoad: function (options) {
this.getMoviesData(\'http://localhost/v2/book/1220562\')
},
getMoviesData:function(url){
wx.request({
url: url,
data: {},
method: \'GET\',
header: {\'content-type\': \'application/xml\' },
success: function (res){
console.log(res)
},
fail: function () {
console.log(\'fail\')
},
})
}
运行结果:
推荐阅读:微信小程序开发有哪些注意事项 微信小程序开发教程
参与讨论
发表评论