用wx.login获取openid需要到服务器交换一次
如果云开发的云函数可以做http请求,那就非常完美了。
试了一下,发现不行。
想问一下官方的大神,是原本就不行,还是我人品不够好?
代码如下:
// 云函数入口函数
exports.main = async (event, context) => {
request({
url: ‘test.php’,
header: {
‘content-type’: ‘application/json’ // 默认值
},
method: ‘GET’,
dataType: ‘json’,
responseType: ‘text’,
success: function(res) {
console.log(res)
},
fail: function(res) {
console.log(res);
},
complete: function(res) {}
})
}
之前是些wx.request,错误提示说wx未定义。
然后改成request,说request未定义
在云函数内测试,结果如下
返回结果:
{"errorCode":10004,"errorMessage":"user code exception caught","stackTrace":"ReferenceError: request is not defined\n at EventHandler.exports.main [as realHandler] (/var/user/index.js:8:3)\n at EventHandler.handle (/var/runtime/node8/bootstrap.js:238:34)\n at invoke (/var/runtime/node8/bootstrap.js:111:22)\n at Timeout.setTimeout [as _onTimeout] (/var/runtime/node8/bootstrap.js:61:9)\n at ontimeout (timers.js:475:11)\n at tryOnTimeout (timers.js:310:5)\n at Timer.listOnTimeout (timers.js:270:5)"}
那也就是说:
除了在文档内列出的,小程序端api和服务端api外,其他的都不能在云函数执行是吗?
const cloud = require( 'wx-server-sdk' ) //引入request-promise用于做网络请求 var rp = require( 'request-promise' ); cloud.init() // 云函数入口函数 exports.main = async (event, context) => { let url = 'https://www.baidu.com' ; return await rp(url) .then( function (res) { return res }) . catch ( function (err) { return '失败' }); } |
上面代码亲测可用,记得 npm install request-promise