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

3

我正在尝试通过客户给予我的API读取json文件,但是它显示HTTP错误405,说方法不允许。请问有人能告诉我我做错了什么吗?

这是客户给我的API请求代码段:

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调用是否正常工作? - undefined
有一个很棒的资源,可以将curl命令转换为Dart代码。正如@Torkel所指出的,你需要以POST方式提交。你错过了curl命令中的--data-binary...部分,它会发送一个请求体到服务器,这必须使用POST方法来完成。 - undefined
1个回答

5

“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<String, String> data = jsonDecode(response.body);这一行上出现了一个新的错误。错误: 异常已发生。 _TypeError (类型'_InternalLinkedHashMap<String, dynamic>'不是类型'Map<String, String>'的子类型) - undefined
试着使用 dynamic 而不是 string?这就是错误信息所说的。 - undefined

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接