我尝试使用POST从Flutter调用Google Cloud函数,但它总是返回415。
这是电话:
http
.post(
Uri.parse('https://example.com/function'),
headers: <String, String>{
'content-type': 'application/json'
},
body: jsonEncode(<String, String>{
"message": "test",
"version": "1",
}),
encoding: Encoding.getByName('utf-8'),
)
谷歌云函数设置正确,我可以用curl成功调用它
curl -X POST https://example.com/function --data '{"message": "test", "version": 1}' -H "Content-Type: application/json"
编辑:这是Google Cloud的功能:
import functions_framework
# Register an HTTP function with the Functions Framework
@functions_framework.http
def my_http_function(request):
# Your code here
print(request)
# Return an HTTP response
return "OK"
它是这样部署的:
gcloud functions deploy example-func \
--gen2 \
--runtime=python311 \
--region europe-west3 \
--source=. \
--entry-point=my_http_function \
--trigger-http \
--allow-unauthenticated
随着curl职位的工作,该功能似乎工作得很好,正如预期的。
编辑二:
这是由Flutter Web引起的。我发现了一些提示,CORS可能是问题所在,将Access-Control-Allow-Origin: *
添加到头部可以解决它,但它没有。
有什么问题吗?
2条答案
按热度按时间x8goxv8g1#
你应该发送json并在头中接受json:
更新:CORS
参考文献:
https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS
toiithl62#
尝试以下操作: