我正在尝试使用Dio在flutter中复制以下curl命令。
$ curl -X POST -d '{"k":"cc","v":"4i8pwFwPkImsnLmIj54BYJA4Z94j0OLyl7vwKecELzYGKbM5Vra6H9T0DI"}' http://192.168.0.1/set
它用于设置处于HotSpot模式的IOT设备,因此设置为192.168.0.1的POST。
这是到目前为止我尝试过的代码。
Future<Response> doClaimCodePost(Alice alice) async {
Dio dio = new Dio();
var data = {
"k": "cc",
"v": _claimCode,
};
//FormData formData = FormData.fromMap(data);
dynamic jsonData = json.encode(data);
dio.interceptors.add(alice.getDioInterceptor());
return await dio.post("http://192.168.0.1/set",
data: jsonData,
options: Options(contentType: Headers.formUrlEncodedContentType));
}
我正在将数据转换为JSON,因为curl命令中的内容就是这样。我将内容类型设置为“ Url编码”,因为这是curl POST命令的作用。
我没有构建此API,我只是不得不使用它...
我已经测试了curl命令,它可以工作。
我熟悉website,它可以神奇地将curl命令转换为Dart代码,但是我想使用Dio。
问题:如何使用Dio复制curl命令?
答案 0 :(得分:0)
如果您要发送json,为什么要使用formUrlEncodedContentType
作为类型?
尝试下一个代码:
final _headers = {
HttpHeaders.contentTypeHeader: "application/json"
}
return await dio.post("http://192.168.0.1/set",
data: data,
options: Options(headers: _headers));
}