0

これは http パッケージによって与えられた 2 番目の例です: https://pub.dev/packages/http

var client = http.Client();
try {
  var uriResponse = await client.post('https://example.com/whatsit/create',
      body: {'name': 'doodle', 'color': 'blue'});
  print(await client.get(uriResponse.bodyFields['uri']));
} finally {
  client.close();
}

エラーが発生します:uriResponse.bodyFields['uri'] no such method.

クラス Response に bodyFields という名前のプロパティがないことがわかります: https://pub.dev/documentation/http/latest/http/Response-class.html

では、どのように使用すればよいclient.get()ですか?

関数https://pub.dev/documentation/http/latest/http/get.htmlのドキュメントを確認し、次のように書きました。

print(await client.get(uriResponse.request.url, {
      'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.121 Safari/537.36',
}));

しかし、これもエラーで失敗します:

Class 'IOClient' has no instance method 'get' with matching arguments.
E/flutter (19613): Receiver: Instance of 'IOClient'
E/flutter (19613): Tried calling: get(Instance of '_SimpleUri', Instance of '_CompactLinkedHashSet<Map<String, String>>')
E/flutter (19613): Found: get(dynamic, {Map<String, String> headers}) => Future<Response>
4

2 に答える 2

0

以下のように書いてpost、応答を別々に印刷してください。

final response = await client.post(
    '*endPoint url*',
    headers: *headers if you have any*,
    body: jsonEncode({'name': 'doodle', 'color': 'blue'}
    ));

print(json.decode((response.body)));

getメソッドについても同じ構造に従います。

于 2020-09-30T12:06:15.867 に答える