抛出此异常是因为响应的状态代码为 404 并且 RequestOptions.validateStatus 配置为为此状态代码抛出

问题描述 投票:0回答:2

在flutter中我尝试使用DIO包发布数据,我发布了一些数据:

final response = await dio.post(
      "127.0.0.1/toko_grosir_api/create.php",
      data: {
        'name': '${event.product.nameProduct}',
        'price': '${event.product.priceProduct}',
        'desc': '${event.product.descProduct}',
        'stock': '${event.product.stockProduct}',
        'date': '${event.product.dateProduct}',
        'category': '${event.product.categoryProduct}'
      },
      options: Options(
        contentType: Headers.formUrlEncodedContentType,
      ),
    );

我正在尝试使用 PHP 作为 Rest API 接收数据,代码如下:

$nameProd = isset($_POST['name']) ? $_POST['name'] : null;
$priceProd = isset($_POST['price']) ? $_POST['price'] : null;
$descProd = isset($_POST['desc']) ? $_POST['desc'] : null;
$stockProd = isset($_POST['stock']) ? $_POST['stock'] : null;
$dateProd = isset($_POST['date']) ? $_POST['date'] : null;
$categoryProd = isset($_POST['category']) ? $_POST['category'] : null;

但是,在 POST 数据时会显示错误,如下所示:

抛出此异常是因为响应的状态代码为 404 和 RequestOptions.validateStatus 配置为此抛出 状态码。 404状态码的含义如下:“客户端 错误 - 请求包含错误语法或无法满足”阅读 有关状态代码的更多信息,请访问 https://developer.mozilla.org/en-US/docs/Web/HTTP/Status 为了 解决此异常,您通常必须验证并修复 您的请求代码,或者您必须修复服务器代码。

我已经使用 postman 尝试了 PHP Rest API,它根据 Rest API 中所需的变量工作,我的代码有什么问题吗?

php flutter dart dio
2个回答
0
投票

我遇到了同样的错误。

您从 DioException 中得到什么信息?查看

Response
内部元素,例如
data
。我在后面使用 NET Web API,在前面使用 Flutter,在
data
内容中我可以看到以下消息:

“消息”->“未找到与请求 URI 'http://localhost/WebApiTest/api/Test/save' 匹配的 HTTP 资源。”

并且:

“MessageDetail”->“在控制器“Test”上未找到与请求匹配的操作。”

就我而言,我调用的端点不存在。这就是为什么我收到此异常(screenshot)。一旦我创建了缺失的端点,异常就消失了。


0
投票

阅读下面的内容 我已经用文章解决了这个问题

https://medium.com/@podcoder/connecting-flutter-application-to-localhost-a1022df63130

© www.soinside.com 2019 - 2024. All rights reserved.