为什么 flutter 的 http.get 函数会让服务器返回 http 错误码 409?在浏览器上调用完全相同的 URL 将返回状态代码 200



我的 Flutter 方法,发出 http 请求。它甚至打印出 http url 并在浏览器上调用相同的完全相同的 url 返回状态代码 200,但使用 flutter 的 http.get 以编程方式调用它返回错误代码 409。

Future<String> saveUser(String firstName, String lastName, String sex) async {
String url = domain +
'register?' +
'first_name=' +
firstName +
'&last_name=' +
lastName +
'&sex=' +
sex;
final response = await http.get(url);
print(url);
print(response.statusCode);
print(response.body);
if (response.statusCode == 200) {
// If server returns an OK response, parse the JSON.
return response.body;
} else {
// If that response was not OK, throw an error.
return 'Failed to Register User';
}
}

这是 Flutter 的控制台日志。 数字表示错误代码,"脚本"标记表示响应正文

I/flutter (27919): http://filteredkenya.co.ke/baliach/register?first_name=Tyler&last_name=Mutai&sex=Male
I/flutter (27919): 409
I/flutter (27919): <script>document.cookie = "humans_21909=1"; document.location.reload(true)</script>

这是我的 Laravel's Controller 方法,它应该将数据保存到数据库并返回响应(已映射到 get 和 post 方法(:

public function register(Request $request)
{
$data = $request->all();
//Validation:
$validator = Validator::make($data, [
'first_name' => 'required|string|min:3',
'last_name' => 'required|string|min:3',
'sex' => 'required|string|min:3',
]);
//If there is an error in either one of the inputs
if ($validator->fails()) {
return response()->json($validator->errors());
}
$registration = new Registration;
$registration->first_name = $data['first_name'];
$registration->last_name = $data['last_name'];
$registration->sex = $data['sex'];
$registration->save();
return response()->json($data);
}

事实证明,我的家庭wifi网络以某种方式导致服务器上出现错误409。在不同的网络上测试应用会产生正确的结果(Http 状态代码 200(。为什么会这样,我不太确定。

我已经通过更改 url 的名称解决了这个问题,如果我注册了.php我将其更改为 regis.php这使变量刷新或类似的东西并解决了。

最新更新