如何使用 Dart 的方法和数据向外部 API 发布信息
Posted
技术标签:
【中文标题】如何使用 Dart 的方法和数据向外部 API 发布信息【英文标题】:How To Make Post To A External API With Methods And Data By Dart 【发布时间】:2018-12-25 15:13:32 【问题描述】:我有一个 Web 服务,想通过 Flutter Dart json 在我的 WebService API 链接中发布数据
【问题讨论】:
【参考方案1】:对于 REST API 调用,我更喜欢使用名为 Dio 的库。使用 Dio 进行 GET、POST、PUT、DELETE 等调用太容易了。
举例
import 'package:dio/dio.dart';
//Now like this
void _makeApiCall() async
Dio dio = new Dio();
Response apiResponse = await dio.get('$YOUR URL?id=$id'); //Where id is just a parameter in GET api call
print(apiResponse.data.toString());
如果您想进行 POST 调用并且需要使用该方法发送表单数据,请这样做
void _makeApiCall() async
Dio dio = new Dio();
FormData formData = FromData.from(
name : "name",
password: "your password",
); // where name and password are api parameters
Response apiResponse = await dio.post('$YOUR URL', data: formData);
print(apiResponse.data.toString());
您还可以将接收到的数据映射到所谓的 POJO 中,以便更好地处理和使用。 如果您想知道如何将数据映射到 POJO(对象),请告诉我。
【讨论】:
【参考方案2】:我推荐使用这个包dio package
做post会是这样的:
Future<List> postDataFromURL_list(String url, Map map) async
// TODO: implement postDataFromURL_list
Response response;
Dio dio = new Dio();
FormData formData = new FormData.from(map);
response = await dio.post(url, data: formData);
【讨论】:
【参考方案3】:您需要更具体地了解 API 和要发送的内容。这是来自HTTP client library的一个简单示例
import 'package:http/http.dart' as http;
var url = "http://example.com/whatsit/create";
http.post(url, body: "name": "doodle", "color": "blue")
.then((response)
print("Response status: $response.statusCode");
print("Response body: $response.body");
);
http.read("http://example.com/foobar.txt").then(print);
【讨论】:
【参考方案4】:能否提供有关 API 的更多详细信息?
假设您的 API 像这样获取数据,http://localhost:3000
您可以按如下方式提出请求
Future<String> create(String text) async
HttpClient client = new HttpClient();
try
HttpClientRequest req = await client.post('localhost', 3000, '/');
req.headers.contentType = new ContentType("application", "json", charset: "utf-8");
req.write('"key":"value"');
HttpClientResponse res = await req.close();
if (res.statusCode == HttpStatus.CREATED) return await res.transform(UTF8.decoder).join();
else throw('Http Error: $res.statusCode');
catch (exception)
throw(exception.toString());
或
如果您想发布地图(从您拥有的任何 json 创建),您可以使用 http
包。 https://pub.dartlang.org/packages/http
将'package:http/http.dart'导入为http;
String url = "http://example.com/whatsit/create";
http.post(url, body: "name": "doodle", "color": "blue")
.then((response)
print("Response status: $response.statusCode");
print("Response body: $response.body");
);
【讨论】:
以上是关于如何使用 Dart 的方法和数据向外部 API 发布信息的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Flutter dart 的列表中的循环内附加数据?
如何向外部 Rest Api 发出 Http Post 请求? [关闭]