dart - Flutter-如何以这种格式发布https?
问题描述
我想在 Dart 中发送发布请求。
curl
看起来像这样。
curl -X POST "https://api-us.faceplusplus.com/facepp/v3/search" \
-F "api_key=<api_key>" \
-F "api_secret=<api_secret>" \
-F "face_token=c2fc0ad7c8da3af5a34b9c70ff764da0" \
-F "outer_id=facesetid"
我试过这样但错误响应说
MISSING_ARGUMENTS:api_key
final String apiKey = API_KEY;
final String apiSecret = API_SECRET;
final String faceToken = FACE_TOKEN;
final String outerId = OUTER_ID;
final data = jsonEncode({
'api_key': apiKey,
'api_secret': apiSecret,
'face_token': faceToken,
'outer_id': outerId
});
final http.Response request = await http.post(
'https://api-us.faceplusplus.com/facepp/v3/search',
body: data,
);
final String response = request.body;
final result = json.decode(response);
print(response);
print('------------------------');
print(result);
我错过了什么?
我怎样才能正确发布这个?
解决方案
从man curl
-F, --form <name=content>
(HTTP) This lets curl emulate a filled-in form in which a user has pressed the submit button. This causes curl to POST data using the Content-Type multipart/form-data
https://pub.dartlang.org/documentation/http/latest/http/MultipartRequest-class.html
var uri = Uri.parse("http://pub.dartlang.org/packages/create"); var request = new http.MultipartRequest("POST", url); request.fields['user'] = 'nweiz@google.com'; request.files.add(new http.MultipartFile.fromFile( 'package', new File('build/package.tar.gz'), contentType: new MediaType('application', 'x-tar')); request.send().then((response) { if (response.statusCode == 200) print("Uploaded!"); });
推荐阅读
- dns - DNS 在尝试其他 A 记录之前减少 A 记录查找时间
- python - 如何解决 XGBoost 错误“feature_names mismatch”?
- javascript - 无论输入如何,让我的 javascript 提示重复自身
- html - 为 SVG 制作动画
a中的元素 标签 - python - 使用 CFLAGS 和 PIP 缩小 AWS Lambda 部署包以适应 sklearn
- python - 即使文件明显在路径中,导入错误
- python - 如何使用 BaseHTPPRequestHandler 使用 Python 从 curl -d 命令中检索数据
- python - Assign same index number to duplicated values up to n duplicates
- three.js - 如何不写入深度缓冲区?
- java - Android logcat 上缺少日志