我尝试在flutter中向API发出post请求,当我在命令行中使用cURL时,它可以完美地工作,但flutter中的请求不起作用。尝试了大量不同的请求格式,但都不起作用。
下面是工作的cURL请求:(API正确返回包含YouTube视频详细信息的字符串)
curl -m 70 -X POST <API_URL_HERE> \
-H "Content-Type:application/json" \
-d '{"youtube_link":"https://www.youtube.com/watch?v=gbUfbN7vT20"}'
以下是不工作的Flutter请求:
String link = "https://www.youtube.com/watch?v=gbUfbN7vT20";
var url = Uri.parse("<API_URL_HERE>");
var response = await http.post(url,
body: jsonEncode({"youtube_link": "$link"}),
headers: {"Content-Type": "application/json"}
);
错误:XMLHttpRequest错误。我检查了接收请求的服务器。对于良好的请求,它返回状态码200,而对于Flutter请求,它返回状态码400(但实际代码中没有发生错误,似乎只是请求有问题)。
更新:好的,这似乎是一个CORS的问题。但是我还没有设法修复它在API端也通过以下说明https://cloud.google.com/functions/docs/writing/http#handling_cors_requests
尽管这可能是另一个问题。
3条答案
按热度按时间smdncfj31#
解决了这个问题:
API是Google Cloud函数上的一个Python函数(对于不同的API,方法可能会有所不同)
您需要在函数的开头和结尾添加以下代码,以接受来自flutter web的CORS请求。
sxissh062#
会成功
wd2eg0qa3#
您可以使用POST方法以这种方式...用户在我的应用程序中注册的示例