当前位置: 首页 > news >正文

怎么做网站登陆战网站建设公司 跨界鱼科技优

怎么做网站登陆战,网站建设公司 跨界鱼科技优,网站登录系统怎样做,做电影资源网站违法吗前言 dio 是一个强大的 Dart HTTP 请求库#xff0c;支持全局配置、Restful API、FormData、拦截器、 请求取消、Cookie 管理、文件上传/下载、超时以及自定义适配器等。 Dio的pub地址为#xff1a;dio | Dart package 封装要求 能够使用get、post、put、patch、delete、…前言 dio 是一个强大的 Dart HTTP 请求库支持全局配置、Restful API、FormData、拦截器、 请求取消、Cookie 管理、文件上传/下载、超时以及自定义适配器等。 Dio的pub地址为dio | Dart package 封装要求 能够使用get、post、put、patch、delete、postForm、postStream请求能够使用token能够取消请求不论网络通信是否成功返回的格式保持一致 封装步骤 1.添加依赖 dart pub add dio 2.创建一个名称为HttpUtil的工厂函数 class HttpUtil {static final HttpUtil _instance HttpUtil.internal();factory HttpUtil() _instance; } 在HttpUtil.internal中初始化Dio baseUrl是请求基地址根据自己的需求转换InterceptorsWrapper中添加了拦截器不论请求成功与否返回的data都是DioResponse类型我们根据DioResponse对数据进行解析 HttpUtil.internal() {// BaseOptions、Options、RequestOptions 都可以配置参数优先级别依次递增且可以根据优先级别覆盖参数BaseOptions options BaseOptions(//请求基地址baseUrl: SERVER_API_URL,// baseUrl: storage.read(key: STORAGE_KEY_APIURL) ?? SERVICE_API_BASEURL,//连接服务器超时时间connectTimeout: const Duration(seconds: 20),// 响应流上前后两次接受到数据的间隔receiveTimeout: const Duration(seconds: 20),// Http请求头.headers: {},/// 请求的Content-Type默认值是application/json; charsetutf-8./// 如果您想以application/x-www-form-urlencoded格式编码请求数据,/// 可以设置此选项为 Headers.formUrlEncodedContentType, 这样[Dio]/// 就会自动编码请求体.contentType: application/json; charsetutf-8,/// [responseType] 表示期望以那种格式(方式)接受响应数据。/// 目前 [ResponseType] 接受三种类型 JSON, STREAM, PLAIN.////// 默认值是 JSON, 当响应头中content-type为application/json时dio 会自动将响应内容转化为json对象。/// 如果想以二进制方式接受响应数据如下载一个二进制文件那么可以使用 STREAM.////// 如果想以文本(字符串)格式接收响应数据请使用 PLAIN.responseType: ResponseType.json,);dio Dio(options);// CookieJar Dart 中用于 http 请求的 cookie 管理器您可以通过它轻松处理复杂的 cookie 策略并持久化 cookie。// CookieJar cookieJar CookieJar();// dio.interceptors.add(CookieManager(cookieJar));// 添加拦截器dio.interceptors.add(InterceptorsWrapper(onRequest: (RequestOptions options, RequestInterceptorHandler handler) {/// 如果你想完成请求并返回一些自定义数据你可以使用 handler.resolve(response)。///这样请求将会被终止上层then会被调用then中返回的数据将是你的自定义response./// 如果你想终止请求并触发一个错误,你可以使用 handler.reject(error)。/// 这样请求将被中止并触发异常上层catchError会被调用。///return handler.next(options);},onResponse: (response, handler) {// 如果你想终止请求并触发一个错误,你可以使用 handler.reject(error)。//这样请求将被中止并触发异常上层catchError会被调用。// 请求成功是对数据做基本处理if (response.statusCode 200) {response.data DioResponse(code: 200, message: 请求成功啦, data: response.data);} else {response.data DioResponse(code: response.statusCode,message: 请求失败啦,data: response.data);}return handler.next(response);},onError: (e, handler) {//停止加载// Loading.dismiss();print(----onError$e,-----$handler);EasyLoading.instance.userInteractions true;EasyLoading.dismiss();DioResponse? eInfo;if ($e.contains(The request connection took longer)) {eInfo DioResponse(code: -1, message: 连接超时, data: );} else {eInfo createErrorEntity(e);}onError(eInfo);Response response Response(data: eInfo, requestOptions: RequestOptions());return handler.resolve(response); //continue// 如果你想完成请求并返回一些自定义数据可以resolve 一个Response,如handler.resolve(response)。// 这样请求将会被终止上层then会被调用then中返回的数据将是你的自定义response.},),); } 3.定义DioResponse code是请求返回的状态码data是后端返回的数据 class DioResponseT {/// 消息(例如成功消息文字/错误消息文字)final String message;/// 自定义code(可根据内部定义方式)final int? code;/// 接口返回的数据final T data;/// 需要添加更多/// .........DioResponse({required this.message,required this.data,required this.code,});factory DioResponse.fromJson(MapString, dynamic json) DioResponse(code: json[code],message: json[message],data: json[data],);MapString, dynamic toJson() {message: message,data: data,code: code,}; } 4.对错误请求进行DioResponse处理 //错误信息DioResponse createErrorEntity(DioError error) {// print(error.type${error.type});var data error.response?.data;print(进入了错误信息error.type:${error.type},错误的码「${error.response!.statusCode},,data:${data});switch (error.type) {case DioErrorType.cancel:return DioResponse(code: -1, message: 请求取消, data: data);case DioErrorType.connectionTimeout:return DioResponse(code: -1, message: 连接超时, data: data);case DioErrorType.sendTimeout:return DioResponse(code: -1, message: 请求超时, data: data);case DioErrorType.receiveTimeout:return DioResponse(code: -1, message: 响应超时, data: data);case DioErrorType.badResponse:try {print(data:$data);int errCode error.response ! null ? error.response!.statusCode! : -1;return DioResponse(code: errCode, message: data[message], data: data);} catch (e) {return DioResponse(code: -1, message: badResponse抛出了异常, data: e);}case DioErrorType.unknown:{try {int errCode error.response ! null ? error.response!.statusCode! : -1;switch (errCode) {case 400:return DioResponse(code: errCode, message: 请求语法错误, data: data);case 401:return DioResponse(code: errCode, message: 没有权限, data: data);case 403:return DioResponse(code: errCode, message: 服务器拒绝执行, data: data);case 404:return DioResponse(code: errCode, message: 无法连接服务器, data: data);case 405:return DioResponse(code: errCode, message: 请求方法被禁止, data: data);case 500:return DioResponse(code: errCode, message: 服务器内部错误, data: data);case 502:return DioResponse(code: errCode, message: 无效的请求, data: data);case 503:return DioResponse(code: errCode, message: 服务器挂了, data: data);case 505:return DioResponse(code: errCode, message: 不支持HTTP协议请求, data: data);default:return DioResponse(code: errCode,message: error.response ! null? error.response!.statusMessage!: 其他状态字异常,data: data);}} on Exception catch (_) {return DioResponse(code: -1, message: unknown抛出了异常, data: data);}}default:{return DioResponse(code: -1, message: error.message.toString(), data: data);}}} 5.对错误信息进行统一的处理 //error进行统一处理onError(DioResponse eInfo) {debugPrint(错误----代码${eInfo.code.toString()}, 错误内容${eInfo.message});String errText ;switch (eInfo.code) {case 401: //401提示什么错误或者做些什么操作比如token过期退出登录switch (eInfo.message) {case Token has expired:case Authentication failed:errText 账号登录已过期请重新登陆.tr;EasyLoading.showError(errText);Get.offNamed(AppRoutes.SIGN_IN);break;case Invalid username or password:EasyLoading.showError(账号或密码不正确.tr);break;case User account is not active:case User account is locked due to security policy:break;}break;case 501:switch (eInfo.message) {case The user does not exist, please register!:errText 该账号不存在.tr;EasyLoading.showError(errText);break;case User already exists!:errText 用户已存在.tr;EasyLoading.showError(errText);break;}break;case 509:print();errText 验证码有误请重新获取.tr;EasyLoading.showError(errText);break;case 511:errText 验证码以过期请重新输入.tr;EasyLoading.showError(errText);break;case 403:errText 该账号没有权限登录,请联系管理员.tr;EasyLoading.showError(errText);break;case -1:EasyLoading.showError(eInfo.message);break;default://用弹窗提示错误errText 未知错误.tr;EasyLoading.showError(errText);}} 6.配置请求类型和取消请求功能 //error进行统一处理onError(DioResponse eInfo) {debugPrint(错误----代码${eInfo.code.toString()}, 错误内容${eInfo.message});String errText ;switch (eInfo.code) {case 401: //401提示什么错误或者做些什么操作比如token过期退出登录switch (eInfo.message) {case Token has expired:case Authentication failed:errText 账号登录已过期请重新登陆.tr;EasyLoading.showError(errText);Get.offNamed(AppRoutes.SIGN_IN);break;case Invalid username or password:EasyLoading.showError(账号或密码不正确.tr);break;case User account is not active:case User account is locked due to security policy:break;}break;case 501:switch (eInfo.message) {case The user does not exist, please register!:errText 该账号不存在.tr;EasyLoading.showError(errText);break;case User already exists!:errText 用户已存在.tr;EasyLoading.showError(errText);break;}break;case 509:print();errText 验证码有误请重新获取.tr;EasyLoading.showError(errText);break;case 511:errText 验证码以过期请重新输入.tr;EasyLoading.showError(errText);break;case 403:errText 该账号没有权限登录,请联系管理员.tr;EasyLoading.showError(errText);break;case -1:EasyLoading.showError(eInfo.message);break;default://用弹窗提示错误errText 未知错误.tr;EasyLoading.showError(errText);}}//错误信息DioResponse createErrorEntity(DioError error) {// print(error.type${error.type});var data error.response?.data;print(进入了错误信息error.type:${error.type},错误的码「${error.response!.statusCode},,data:${data});switch (error.type) {case DioErrorType.cancel:return DioResponse(code: -1, message: 请求取消, data: data);case DioErrorType.connectionTimeout:return DioResponse(code: -1, message: 连接超时, data: data);case DioErrorType.sendTimeout:return DioResponse(code: -1, message: 请求超时, data: data);case DioErrorType.receiveTimeout:return DioResponse(code: -1, message: 响应超时, data: data);case DioErrorType.badResponse:try {print(data:$data);int errCode error.response ! null ? error.response!.statusCode! : -1;return DioResponse(code: errCode, message: data[message], data: data);} catch (e) {return DioResponse(code: -1, message: badResponse抛出了异常, data: e);}case DioErrorType.unknown:{try {int errCode error.response ! null ? error.response!.statusCode! : -1;switch (errCode) {case 400:return DioResponse(code: errCode, message: 请求语法错误, data: data);case 401:return DioResponse(code: errCode, message: 没有权限, data: data);case 403:return DioResponse(code: errCode, message: 服务器拒绝执行, data: data);case 404:return DioResponse(code: errCode, message: 无法连接服务器, data: data);case 405:return DioResponse(code: errCode, message: 请求方法被禁止, data: data);case 500:return DioResponse(code: errCode, message: 服务器内部错误, data: data);case 502:return DioResponse(code: errCode, message: 无效的请求, data: data);case 503:return DioResponse(code: errCode, message: 服务器挂了, data: data);case 505:return DioResponse(code: errCode, message: 不支持HTTP协议请求, data: data);default:return DioResponse(code: errCode,message: error.response ! null? error.response!.statusMessage!: 其他状态字异常,data: data);}} on Exception catch (_) {return DioResponse(code: -1, message: unknown抛出了异常, data: data);}}default:{return DioResponse(code: -1, message: error.message.toString(), data: data);}}}/// 取消请求/// 同一个cancel token 可以用于多个请求当一个cancel token取消时所有使用该cancel token的请求都会被取消。/// 所以参数可选void cancelRequests(CancelToken token) {token.cancel(cancelled);}/// 读取本地配置MapString, dynamic? getAuthorizationHeader() {var headers String, dynamic{};var token StorageUtil().read(token);print(token);if (token ! null) {headers[X-Authorization] Bearer $token;}return headers;}/// restful get 操作/// refresh 是否下拉刷新 默认 false/// noCache 是否不缓存 默认 true/// list 是否列表 默认 false/// cacheKey 缓存key/// cacheDisk 是否磁盘缓存Future get(String path, {MapString, dynamic? queryParameters,Options? options,bool refresh false,bool noCache !CACHE_ENABLE,bool list false,String cacheKey ,bool cacheDisk false,CancelToken? canceltoken,MapString, dynamic? data,}) async {Options requestOptions options ?? Options();requestOptions.headers requestOptions.headers ?? {};MapString, dynamic? authorization getAuthorizationHeader();if (authorization ! null) {requestOptions.headers!.addAll(authorization);}try {print(入参$path--$data);var response await dio.get(path,queryParameters: queryParameters,options: requestOptions,cancelToken: canceltoken ?? cancelToken,data: data,);print(:$response);return response.data;} catch (e) {print(出现了错误$e);}}/// restful post 操作Future post(String path, {dynamic data,MapString, dynamic? queryParameters,Options? options,CancelToken? canceltoken,}) async {Options requestOptions options ?? Options();requestOptions.headers requestOptions.headers ?? {};MapString, dynamic? authorization getAuthorizationHeader();if (authorization ! null) {requestOptions.headers!.addAll(authorization);}try {var response await dio.post(path,data: data,queryParameters: queryParameters,options: requestOptions,cancelToken: canceltoken ?? cancelToken,);return response.data;} catch (e) {print(出现了错误$e);return e;}}/// restful put 操作Future put(String path, {dynamic data,MapString, dynamic? queryParameters,Options? options,}) async {Options requestOptions options ?? Options();requestOptions.headers requestOptions.headers ?? {};MapString, dynamic? authorization getAuthorizationHeader();if (authorization ! null) {requestOptions.headers!.addAll(authorization);}var response await dio.put(path,data: data,queryParameters: queryParameters,options: requestOptions,cancelToken: cancelToken,);return response.data;}/// restful patch 操作Future patch(String path, {dynamic data,MapString, dynamic? queryParameters,Options? options,}) async {Options requestOptions options ?? Options();requestOptions.headers requestOptions.headers ?? {};MapString, dynamic? authorization getAuthorizationHeader();if (authorization ! null) {requestOptions.headers!.addAll(authorization);}var response await dio.patch(path,data: data,queryParameters: queryParameters,options: requestOptions,cancelToken: cancelToken,);return response.data;}/// restful delete 操作Future delete(String path, {dynamic data,MapString, dynamic? queryParameters,Options? options,}) async {Options requestOptions options ?? Options();requestOptions.headers requestOptions.headers ?? {};MapString, dynamic? authorization getAuthorizationHeader();if (authorization ! null) {requestOptions.headers!.addAll(authorization);}var response await dio.delete(path,data: data,queryParameters: queryParameters,options: requestOptions,cancelToken: cancelToken,);return response.data;}/// restful post form 表单提交操作Future postForm(String path, {dynamic data,MapString, dynamic? queryParameters,Options? options,}) async {Options requestOptions options ?? Options();requestOptions.headers requestOptions.headers ?? {};MapString, dynamic? authorization getAuthorizationHeader();if (authorization ! null) {requestOptions.headers!.addAll(authorization);}var response await dio.post(path,data: FormData.fromMap(data),queryParameters: queryParameters,options: requestOptions,cancelToken: cancelToken,);return response.data;}/// restful post Stream 流数据Future postStream(String path, {dynamic data,int dataLength 0,MapString, dynamic? queryParameters,Options? options,}) async {Options requestOptions options ?? Options();requestOptions.headers requestOptions.headers ?? {};MapString, dynamic? authorization getAuthorizationHeader();if (authorization ! null) {requestOptions.headers!.addAll(authorization);}requestOptions.headers!.addAll({Headers.contentLengthHeader: dataLength.toString(),});var response await dio.post(path,data: Stream.fromIterable(data.map((e) [e])),queryParameters: queryParameters,options: requestOptions,cancelToken: cancelToken,);return response.data;} } 7.全部代码 import dart:math;import package:cookie_jar/cookie_jar.dart; import package:dio/dio.dart; import package:flutter/material.dart; import package:get/get.dart as tr; import package:get/get_core/src/get_main.dart; import package:my_app/common/routes/routes.dart; import package:my_app/common/utils/utils.dart; import package:my_app/common/value/serve.dart; import package:flutter_easyloading/flutter_easyloading.dart; import package:dio_cookie_manager/dio_cookie_manager.dart; // import package:get/get.dart; // import package:dio/src/form_data.dart; import ./../value/cache.dart;class HttpUtil {static final HttpUtil _instance HttpUtil.internal();factory HttpUtil() _instance;late Dio dio;//可以通过 CancelToken 来取消发起的请求CancelToken cancelToken CancelToken();HttpUtil.internal() {// BaseOptions、Options、RequestOptions 都可以配置参数优先级别依次递增且可以根据优先级别覆盖参数BaseOptions options BaseOptions(//请求基地址baseUrl: SERVER_API_URL,// baseUrl: storage.read(key: STORAGE_KEY_APIURL) ?? SERVICE_API_BASEURL,//连接服务器超时时间connectTimeout: const Duration(seconds: 20),// 响应流上前后两次接受到数据的间隔receiveTimeout: const Duration(seconds: 20),// Http请求头.headers: {},/// 请求的Content-Type默认值是application/json; charsetutf-8./// 如果您想以application/x-www-form-urlencoded格式编码请求数据,/// 可以设置此选项为 Headers.formUrlEncodedContentType, 这样[Dio]/// 就会自动编码请求体.contentType: application/json; charsetutf-8,/// [responseType] 表示期望以那种格式(方式)接受响应数据。/// 目前 [ResponseType] 接受三种类型 JSON, STREAM, PLAIN.////// 默认值是 JSON, 当响应头中content-type为application/json时dio 会自动将响应内容转化为json对象。/// 如果想以二进制方式接受响应数据如下载一个二进制文件那么可以使用 STREAM.////// 如果想以文本(字符串)格式接收响应数据请使用 PLAIN.responseType: ResponseType.json,);dio Dio(options);// CookieJar Dart 中用于 http 请求的 cookie 管理器您可以通过它轻松处理复杂的 cookie 策略并持久化 cookie。// CookieJar cookieJar CookieJar();// dio.interceptors.add(CookieManager(cookieJar));// 添加拦截器dio.interceptors.add(InterceptorsWrapper(onRequest: (RequestOptions options, RequestInterceptorHandler handler) {/// 如果你想完成请求并返回一些自定义数据你可以使用 handler.resolve(response)。///这样请求将会被终止上层then会被调用then中返回的数据将是你的自定义response./// 如果你想终止请求并触发一个错误,你可以使用 handler.reject(error)。/// 这样请求将被中止并触发异常上层catchError会被调用。///return handler.next(options);},onResponse: (response, handler) {// 如果你想终止请求并触发一个错误,你可以使用 handler.reject(error)。//这样请求将被中止并触发异常上层catchError会被调用。// 请求成功是对数据做基本处理if (response.statusCode 200) {response.data DioResponse(code: 200, message: 请求成功啦, data: response.data);} else {response.data DioResponse(code: response.statusCode,message: 请求失败啦,data: response.data);}// 对某些单独的url返回数据做特殊处理// if (response.requestOptions.baseUrl.contains(???????)) {// //....// }return handler.next(response);},onError: (e, handler) {//停止加载// Loading.dismiss();print(----onError$e,-----$handler);EasyLoading.instance.userInteractions true;EasyLoading.dismiss();DioResponse? eInfo;if ($e.contains(The request connection took longer)) {eInfo DioResponse(code: -1, message: 连接超时, data: );} else {eInfo createErrorEntity(e);}// print(111111111:$eInfo);onError(eInfo);Response response Response(data: eInfo, requestOptions: RequestOptions());// e.data eInfo;return handler.resolve(response); //continue// 如果你想完成请求并返回一些自定义数据可以resolve 一个Response,如handler.resolve(response)。// 这样请求将会被终止上层then会被调用then中返回的数据将是你的自定义response.},),);}//error进行统一处理onError(DioResponse eInfo) {debugPrint(错误----代码${eInfo.code.toString()}, 错误内容${eInfo.message});String errText ;switch (eInfo.code) {case 401: //401提示什么错误或者做些什么操作比如token过期退出登录switch (eInfo.message) {case Token has expired:case Authentication failed:errText 账号登录已过期请重新登陆.tr;EasyLoading.showError(errText);Get.offNamed(AppRoutes.SIGN_IN);break;case Invalid username or password:EasyLoading.showError(账号或密码不正确.tr);break;case User account is not active:case User account is locked due to security policy:break;}break;case 501:switch (eInfo.message) {case The user does not exist, please register!:errText 该账号不存在.tr;EasyLoading.showError(errText);break;case User already exists!:errText 用户已存在.tr;EasyLoading.showError(errText);break;}break;case 509:print();errText 验证码有误请重新获取.tr;EasyLoading.showError(errText);break;case 511:errText 验证码以过期请重新输入.tr;EasyLoading.showError(errText);break;case 403:errText 该账号没有权限登录,请联系管理员.tr;EasyLoading.showError(errText);break;case -1:EasyLoading.showError(eInfo.message);break;default://用弹窗提示错误errText 未知错误.tr;EasyLoading.showError(errText);}}//错误信息DioResponse createErrorEntity(DioError error) {// print(error.type${error.type});var data error.response?.data;print(进入了错误信息error.type:${error.type},错误的码「${error.response!.statusCode},,data:${data});switch (error.type) {case DioErrorType.cancel:return DioResponse(code: -1, message: 请求取消, data: data);case DioErrorType.connectionTimeout:return DioResponse(code: -1, message: 连接超时, data: data);case DioErrorType.sendTimeout:return DioResponse(code: -1, message: 请求超时, data: data);case DioErrorType.receiveTimeout:return DioResponse(code: -1, message: 响应超时, data: data);case DioErrorType.badResponse:try {print(data:$data);int errCode error.response ! null ? error.response!.statusCode! : -1;return DioResponse(code: errCode, message: data[message], data: data);} catch (e) {return DioResponse(code: -1, message: badResponse抛出了异常, data: e);}case DioErrorType.unknown:{try {int errCode error.response ! null ? error.response!.statusCode! : -1;switch (errCode) {case 400:return DioResponse(code: errCode, message: 请求语法错误, data: data);case 401:return DioResponse(code: errCode, message: 没有权限, data: data);case 403:return DioResponse(code: errCode, message: 服务器拒绝执行, data: data);case 404:return DioResponse(code: errCode, message: 无法连接服务器, data: data);case 405:return DioResponse(code: errCode, message: 请求方法被禁止, data: data);case 500:return DioResponse(code: errCode, message: 服务器内部错误, data: data);case 502:return DioResponse(code: errCode, message: 无效的请求, data: data);case 503:return DioResponse(code: errCode, message: 服务器挂了, data: data);case 505:return DioResponse(code: errCode, message: 不支持HTTP协议请求, data: data);default:return DioResponse(code: errCode,message: error.response ! null? error.response!.statusMessage!: 其他状态字异常,data: data);}} on Exception catch (_) {return DioResponse(code: -1, message: unknown抛出了异常, data: data);}}default:{return DioResponse(code: -1, message: error.message.toString(), data: data);}}}/// 取消请求/// 同一个cancel token 可以用于多个请求当一个cancel token取消时所有使用该cancel token的请求都会被取消。/// 所以参数可选void cancelRequests(CancelToken token) {token.cancel(cancelled);}/// 读取本地配置MapString, dynamic? getAuthorizationHeader() {var headers String, dynamic{};var token StorageUtil().read(token);print(token);if (token ! null) {headers[X-Authorization] Bearer $token;}return headers;}/// restful get 操作/// refresh 是否下拉刷新 默认 false/// noCache 是否不缓存 默认 true/// list 是否列表 默认 false/// cacheKey 缓存key/// cacheDisk 是否磁盘缓存Future get(String path, {MapString, dynamic? queryParameters,Options? options,bool refresh false,bool noCache !CACHE_ENABLE,bool list false,String cacheKey ,bool cacheDisk false,CancelToken? canceltoken,MapString, dynamic? data,}) async {Options requestOptions options ?? Options();requestOptions.headers requestOptions.headers ?? {};MapString, dynamic? authorization getAuthorizationHeader();if (authorization ! null) {requestOptions.headers!.addAll(authorization);}try {print(入参$path--$data);var response await dio.get(path,queryParameters: queryParameters,options: requestOptions,cancelToken: canceltoken ?? cancelToken,data: data,);print(:$response);return response.data;} catch (e) {print(出现了错误$e);}}/// restful post 操作Future post(String path, {dynamic data,MapString, dynamic? queryParameters,Options? options,CancelToken? canceltoken,}) async {Options requestOptions options ?? Options();requestOptions.headers requestOptions.headers ?? {};MapString, dynamic? authorization getAuthorizationHeader();if (authorization ! null) {requestOptions.headers!.addAll(authorization);}try {var response await dio.post(path,data: data,queryParameters: queryParameters,options: requestOptions,cancelToken: canceltoken ?? cancelToken,);return response.data;} catch (e) {print(出现了错误$e);return e;}}/// restful put 操作Future put(String path, {dynamic data,MapString, dynamic? queryParameters,Options? options,}) async {Options requestOptions options ?? Options();requestOptions.headers requestOptions.headers ?? {};MapString, dynamic? authorization getAuthorizationHeader();if (authorization ! null) {requestOptions.headers!.addAll(authorization);}var response await dio.put(path,data: data,queryParameters: queryParameters,options: requestOptions,cancelToken: cancelToken,);return response.data;}/// restful patch 操作Future patch(String path, {dynamic data,MapString, dynamic? queryParameters,Options? options,}) async {Options requestOptions options ?? Options();requestOptions.headers requestOptions.headers ?? {};MapString, dynamic? authorization getAuthorizationHeader();if (authorization ! null) {requestOptions.headers!.addAll(authorization);}var response await dio.patch(path,data: data,queryParameters: queryParameters,options: requestOptions,cancelToken: cancelToken,);return response.data;}/// restful delete 操作Future delete(String path, {dynamic data,MapString, dynamic? queryParameters,Options? options,}) async {Options requestOptions options ?? Options();requestOptions.headers requestOptions.headers ?? {};MapString, dynamic? authorization getAuthorizationHeader();if (authorization ! null) {requestOptions.headers!.addAll(authorization);}var response await dio.delete(path,data: data,queryParameters: queryParameters,options: requestOptions,cancelToken: cancelToken,);return response.data;}/// restful post form 表单提交操作Future postForm(String path, {dynamic data,MapString, dynamic? queryParameters,Options? options,}) async {Options requestOptions options ?? Options();requestOptions.headers requestOptions.headers ?? {};MapString, dynamic? authorization getAuthorizationHeader();if (authorization ! null) {requestOptions.headers!.addAll(authorization);}var response await dio.post(path,data: FormData.fromMap(data),queryParameters: queryParameters,options: requestOptions,cancelToken: cancelToken,);return response.data;}/// restful post Stream 流数据Future postStream(String path, {dynamic data,int dataLength 0,MapString, dynamic? queryParameters,Options? options,}) async {Options requestOptions options ?? Options();requestOptions.headers requestOptions.headers ?? {};MapString, dynamic? authorization getAuthorizationHeader();if (authorization ! null) {requestOptions.headers!.addAll(authorization);}requestOptions.headers!.addAll({Headers.contentLengthHeader: dataLength.toString(),});var response await dio.post(path,data: Stream.fromIterable(data.map((e) [e])),queryParameters: queryParameters,options: requestOptions,cancelToken: cancelToken,);return response.data;} }class DioResponseT {/// 消息(例如成功消息文字/错误消息文字)final String message;/// 自定义code(可根据内部定义方式)final int? code;/// 接口返回的数据final T data;/// 需要添加更多/// .........DioResponse({required this.message,required this.data,required this.code,});factory DioResponse.fromJson(MapString, dynamic json) DioResponse(code: json[code],message: json[message],data: json[data],);MapString, dynamic toJson() {message: message,data: data,code: code,}; }
http://www.w-s-a.com/news/616938/

相关文章:

  • 石家庄制作网站的公司双柏县住房和城乡建设局网站
  • 影视vip网站建设教程ppt模板免费下载 素材红色
  • 内蒙古城乡建设部网站首页平台网站建设ppt
  • 集约化网站建设项目官方网站建设
  • 原创先锋 北京网站建设网站开发电脑内存要多少
  • 婚恋网站建设项目创业计划书网站建设 食品
  • 免费建网站代码查询做导员的网站
  • 做网站的软件电子可以看女人不易做网站
  • 学校响应式网站模板下载仙居住房和城乡建设规划局网站
  • 推广网站的方法有拍卖网站建设
  • 网站建设网站排名优化中国网站服务器哪个好
  • asp网站应用程序网站建设需要提供的资料
  • 网站开发与设计.net微信小程序设计制作
  • 怎样做网站排名优化展馆设计费取费标准一览表
  • 网站建设去哪可接单网站建设与设计大作业
  • 休闲咖啡厅网站开发目标韩国小清新网站模板
  • 做微景观的网站制作网页模板适应不同分辨率
  • 最简单的网站系统昨天军事新闻最新消息
  • 做ps网页设计的网站有哪些wordpress内容付费
  • 有没有免费注册域名的网站科技小制作 手工 简单
  • 网站支付端口win10优化大师怎么样
  • 怎么做云购网站吗网站流量监测
  • 网站被恶意刷流量可以翻外墙的浏览器
  • 网站做直链下载存储解决方案怎么把网站设置为主页面
  • 西安做网站招聘深圳网站见
  • 网站怎么做优化百度能搜索到wordpress 子分类
  • 六安网站建设培训制作网站需要多少时间
  • 电子商务专业网站建设什么软件可以做动画视频网站
  • wordpress 分享主题做网站优化有必要
  • ftp 网站管理电商网站设计图片