Flutter - 错误:不允许使用 HTTP 405 方法

Posted

技术标签:

【中文标题】Flutter - 错误:不允许使用 HTTP 405 方法【英文标题】:Flutter - ERROR : HTTP 405 Method not allowed 【发布时间】:2020-02-13 05:34:35 【问题描述】:

我正在尝试通过客户端提供给我的 API 读取 json 文件,但它给出了 HTTP 错误 405 说方法不允许。谁能告诉我做错了什么?

这个 api 请求 sn-p 给了我:

curl 'http://finelistings.com/backend/apis/webbrands/' -H 'Content-Type: application/json' -H 'Accept: application/json' --data-binary '' --compressed --insecure
Future<String> getData() async 
    var response = await http.get(
      Uri.encodeFull("http://finelistings.com/backend/apis/webbrands/"),
      headers: 
        "Accept": "application/json",
      
    );

    Map<String, String> data = jsonDecode(response.body);

    print(data);
  

【问题讨论】:

Curl 调用是否正常工作? 有一个 great resource 可以将 curl 命令转换为 dart。正如@Torkel 所注意到的,您需要作为 POST 提交。您错过了 curl 命令的部分内容,即 --data-binary...,该部分 向服务器发送正文,该请求必须通过 POST 完成。 【参考方案1】:

Method not allowed 可能是指错误的请求方法。

尝试使用 POST 而不是 GET,至少我使用提到的 URL 得到了响应。

Future<String> getData() async 
    var response = await http.post(
      Uri.encodeFull("http://finelistings.com/backend/apis/webbrands/"),
      headers: 
        "Accept": "application/json",
      
    );

    Map<String, dynamic> data = jsonDecode(response.body);

    print(data);
  

【讨论】:

我尝试了这种方法,但现在我在Map&lt;String, String&gt; data = jsonDecode(response.body); 线上遇到了一个新错误。 错误: Exception has occurred. _TypeError (type '_InternalLinkedHashMap&lt;String, dynamic&gt;' is not a subtype of type 'Map&lt;String, String&gt;') 尝试使用动态而不是字符串?这就是错误消息所说的

以上是关于Flutter - 错误:不允许使用 HTTP 405 方法的主要内容,如果未能解决你的问题,请参考以下文章

未处理的异常:错误状态:平台不允许使用不安全的 HTTP - usesClearTextTraffic 不起作用

平台不允许 Flutter Insecure http

Flutter Ios 上不允许使用资源分叉、Finder 信息或类似的碎屑

您无法推出此版本,因为它不允许任何现有用户升级到 Flutter 应用中新添加的 APK

flutter 使用ListView等列表组件错误记录

API 不工作/http 错误 SocketException:在发布版本中主机查找失败(在调试模式下工作)对于 Flutter