这是我的代码
void _uploadFile(filePath1, filepath2) async {
// Get base file name
String fileName1 = basename(filePath1.path);
var ij = lookupMimeType(fileName1);
print('this is $ij');
print("File base name: $fileName1");
print(filePath1);
String fileName2 = basename(filepath2.path);
try {
FormData formData = new FormData.fromMap({
"text": 'hello',
"productImages": [
await MultipartFile.fromFile(filePath1.path, filename: fileName1),
await MultipartFile.fromFile(filepath2.path, filename: fileName2),
]
});
Response response = await Dio().post("http://192.168.18.25:8080/test",
data: formData,);
print("File upload response: $response");
// Show the incoming message in snakbar
_showSnakBarMsg(response.data['message']);
} catch (e) {
print("Exception Caught: $e");
}
} …Run Code Online (Sandbox Code Playgroud) 尝试使用拦截器(来自dio)从服务器解密 JSON。但用户界面在解密过程中冻结。
class DecryptInterceptor extends Interceptor {
@override
Future onResponse(Response response) async {
response.data = decrypt(response.data); //freezes here
return super.onResponse(response);
}
}
Object decrypt(Object object){
// computations
}
Run Code Online (Sandbox Code Playgroud) 我已经搜索过类似的问题和这个问题的答案,但直到现在还没有找到任何具体的答案。我正在尝试将下载的文件保存到我的内部手机存储中。最好是下载文件夹...我正在使用 dio 和路径提供程序。已尝试使用“获取外部存储目录”。但即使下载后,我也无法在设备中的任何位置找到该文件。请问我如何指定下载路径到 /storage/emulated/0/Download 之类的东西
我是 flutter 新手,我在项目中使用 Dio 来实现会员注册功能..但是每次我执行注册过程时,调试控制台都会给我这个错误
I/flutter (13428): Instance of 'FormData'
I/flutter (13428): DioError [DioErrorType.RESPONSE]: Http status error [500]
Run Code Online (Sandbox Code Playgroud)
然而,当我尝试向 POSTMAN 注册时,它成功了。所以我不确定问题出在哪里..这是我的代码,你们能帮我吗?我已经坚持这个问题好几个星期了..
final String url = "https://api.censored.org/api/members/register";
Dio.FormData formData = Dio.FormData.fromMap({
"nama_lengkap": name,
"tempat_lahir": tempatlahir,
"tanggal_lahir": selectedDate.toString(),
"email": email,
"password": password,
"username": username,
"nomor_ktp": noKTP,
"alamat_ktp": alamatktpmember,
"alamat_domisili": alamatmember,
"pekerjaan": pekerjaanmember,
"alamat_pekerjaan": alamatperusahaanmember,
"no_whatsapp": noWAmember,
"no_hp": noteleponmember,
"nama_pemilik_rekening": namarekmember,
"nomor_rekening": norekmember,
"bank_id": _valBank,
"aggrement": _eulargprogramming,
//Foto
"foto_ktp": await Dio.MultipartFile.fromFile(_fotoKtp.path),
"selfie_dengan_ktp": await Dio.MultipartFile.fromFile(_fotoSelfie.path),
"foto_kk": await Dio.MultipartFile.fromFile(_fotoKK.path),
"foto_pengenal_lainnya":
await Dio.MultipartFile.fromFile(_fotoKartu.path),
"foto_buku_rekening":
await Dio.MultipartFile.fromFile(_fotoRekening.path), …Run Code Online (Sandbox Code Playgroud) 所以我用一些简单的函数来包装我的 HTTP 请求。喜欢以下:
import 'package:dio/dio.dart';
class HttpService {
late Dio _dio;
final String baseUrl = "http://10.0.2.2:8080/community";
HttpService() {
_dio = Dio(BaseOptions(
baseUrl: baseUrl,
));
// initializaInterceptors();
}
Future<Response> getRequest(String endPoint) async {
Response response;
try {
response = await _dio.get(endPoint);
} on DioError catch (e) {
print(e.message);
throw Exception(e.message);
}
return response;
}
Future<Response> postRequest(String endPoint) async {
Response response;
try {
response = await _dio.post(endPoint);
} on DioError catch (e) {
print(e.message);
throw Exception(e.message);
}
return response;
}
initializaInterceptors() …Run Code Online (Sandbox Code Playgroud) 文件/字段如下:
jsonData,
List[images],
MultipartFile,
Run Code Online (Sandbox Code Playgroud)
使用 DIO 将所有这些字段/文件一次发送到服务器
我试图加载数组 json(没有键的数组)并获取到对象列表中,这是我的示例代码:
我的 ApiCliet :
Future<List<OnBoardingModel>> fetchOnboarding() async {
try {
Response response = await dio.get("api/OnboardingItem");
return OnBoardingModel.fromJson(response.data) as List;
} catch (error, stacktrace) {
throw Exception("Exception occured: $error stackTrace: $stacktrace");
}
}
Run Code Online (Sandbox Code Playgroud)
我的对象(使用quicktype生成):
List<OnBoardingModel> onBoardingModelFromJson(String str) => List<OnBoardingModel>.from(json.decode(str).map((x) => OnBoardingModel.fromJson(x)));
String onBoardingModelToJson(List<OnBoardingModel> data) => json.encode(List<dynamic>.from(data.map((x) => x.toJson())));
class OnBoardingModel {
OnBoardingModel({
this.id,
this.judul,
this.deskripsi,
this.urlGambar,
});
int id;
String judul;
String deskripsi;
String urlGambar;
factory OnBoardingModel.fromJson(Map<String, dynamic> json) => OnBoardingModel(
id: json["id"],
judul: json["judul"],
deskripsi: json["deskripsi"],
urlGambar: …Run Code Online (Sandbox Code Playgroud) 我想定义一个方法如下:
@GET("/users")
@Headers(<String, dynamic>{"Accept": "application/json", "Authorization": "Basic " + authKey})
Future<List<User>> getUsers(@Query("fromDate") DateTime from, @Query("toDate") DateTime to);
Run Code Online (Sandbox Code Playgroud)
这样DateTime 参数就被序列化为 ISO8061格式,输出查询如下所示:
[获取] https://address.com/users?fromDate=2021-02-21T12:00:00.000Z&toDate=2021-02-27T12:00:00.000Z
我已经在使用 Flutter Retrofit lib (内部使用 Flutter dio)。
我怎样才能做到这一点?
我正在尝试使用 Dio 为我的请求编写单元测试,但我不断收到此错误: 类型“Null”不是类型“BaseOptions”的子类型
我尝试以多种不同的方式在 DioMock 上添加基本选项,但测试保持不变。我该如何修复它?
以下是我的网络课程和测试课程。
class NetworkService {
final Dio dio;
NetworkService(this.dio){
dio.options.baseUrl = "https://food2fork.ca/api/recipe/search";
dio.options.headers['Authorization'] = 'Token 9c8b06d329136da358c2d00e76946b0111ce2c48';
dio.interceptors.add(InterceptorsWrapper(
onRequest: (options, handler){
print('base ${options.baseUrl}');
print("PATH: ${options.path}");
return handler.next(options);
},
onResponse: (response, handler){
print("RESPONSE: ${response.statusCode} PATH: ${response.requestOptions.path}");
return handler.next(response);
},
onError: (DioError e, handler){
print("ERROR: ${e.response?.statusCode} => PATH: ${e.requestOptions.path}");
return handler.next(e);
}
));
}
Future<List<Recipe>> getRecipe() async {
var response = await dio.get('/?page=1&query=beef');
print("response ${response.data}");
if(response.statusCode == 200){
final List<Recipe> recipeList = [];
for(Map<String, dynamic> recipe in …Run Code Online (Sandbox Code Playgroud) 我在尝试使用我的 API 时遇到问题,在跟进这个问题后,我陷入了困境,我尝试了不同版本的不同模拟器,但问题仍然存在。
错误:
DioError [DioErrorType.other]: HttpException: Connection closed before full header was received, uri = http://10.0.2.2:7108/Users/authenticate
Run Code Online (Sandbox Code Playgroud)
扑医生
HTTP 邮递
class AuthenticateRemoteApi extends AuthenticateGateway {
final AuthenticateMapper _authenticateMapper = AuthenticateMapper();
@override
Future<SesionUser> login(Authenticate user) async {
var dio = Dio();
dio.options.headers['content-Type'] = 'application/json';
String url = 'http://10.0.2.2:7108/Users/authenticate';
try {
Response response = await dio.post(url, data: authenticateModelToJson(user));
return _authenticateMapper.fromMap(jsonDecode(response.data));
} catch (e) {
throw Exception(e);
}
}
}
Run Code Online (Sandbox Code Playgroud)