Mic*_*ael 7 cloud json google-cloud-platform flutter google-cloud-functions
我正在尝试使用 cloud_functions 包从我的 Flutter 应用程序调用 Google Cloud 函数。
这是我的云功能:
export const helloWorld = functions.region('europe-west1').https.onRequest((request, response) => {
response.status(200).json({
message: "Hello World!"
});
});
Run Code Online (Sandbox Code Playgroud)
这是我调用此函数的颤振方法:
try {
final dynamic resp =
await CloudFunctions.instance.call(
functionName: "helloWorld"
);
print(resp);
} on CloudFunctionsException catch (e) {
...
} catch (e) {
...
} finally {
...
}
Run Code Online (Sandbox Code Playgroud)
如您所见,这是最简单的请求形式,没有任何参数。
我的问题: 对 Cloud Function 的每次调用都会导致 CloudFunctionsException。原因:“响应不是有效的 JSON 对象。 ”。
也许有人知道这里出了什么问题?如果我通过 Postman 或浏览器调用云函数,将返回一个有效的 JSON 对象,并且不会抛出任何异常。
提前致谢,迈克尔
如果要使用 Flutter SDK 调用可调用函数,则需要实际定义可调用函数。现在,您正在声明一个 HTTP 函数,这与此不同。请阅读可调用函数的文档以了解如何声明和实现可调用函数。
取而代之的是:
functions.https.onRequest(...)
Run Code Online (Sandbox Code Playgroud)
它看起来像这样:
functions.https.onCall(...)
Run Code Online (Sandbox Code Playgroud)
然后,您返回一个 JavaScript 对象以转换为 JSON,而不是使用响应对象。
我可以找到错误:一旦您定义了默认区域的另一个区域,flutter 包 cloud_functions 似乎无法再找到该函数:
作品:
export const helloWorld = functions.https.onCall((data, context) => {
return {
message: "Hello World"
}
});
Run Code Online (Sandbox Code Playgroud)
不起作用:
export const helloWorld = functions.region('europe-west1').https.onCall((data, context) => {
return {
message: "Hello World"
}
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4060 次 |
| 最近记录: |