首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法使用dio设置标头

无法使用dio设置标头
EN

Stack Overflow用户
提问于 2020-09-05 13:00:37
回答 1查看 1.4K关注 0票数 0

我无法使用dio设置header。我正在尝试将我的访问令牌设置为header。我正在尝试设置header,以便不需要每个请求都调用it.Here是我的网络类,我正在尝试使用dio调用header

我的网络类:

代码语言:javascript
复制
class NetworkUtil {
 Dio _dio;
String token;

  getToken() async {
    SharedPreferences preferences = await SharedPreferences.getInstance();
    String getToken = preferences.getString(AppPrefernces.LOGIN_PREF);
    return getToken;
  }

  NetworkUtil() {
    ///Create Dio Object using baseOptions set receiveTimeout,connectTimeout
    BaseOptions options = BaseOptions(receiveTimeout: 5000, connectTimeout: 5000);
    options.baseUrl = ApiConstants.BASE_URL;
    _dio = Dio(options);
    _dio.interceptors.add(InterceptorsWrapper(
        onRequest: (Options option) async{
          //my function to recovery token
          await getToken().then((result) {
            LoginResponse loginResponse = LoginResponse.fromJson(jsonDecode(result));
            token = loginResponse.accessToken;
          });
          option.headers = {
            "Authorization": "Bearer $token"
          };
        }
    ));


  }

   


  ///used for calling Get Request
  Future<Response> get(String url, Map<String, String> params) async {
    Response response = await _dio.get(url,
        queryParameters: params,
        options: Options(responseType: ResponseType.json));
    return response;
  }

  ///used for calling post Request
  Future<Response> post(String url, Map<String, String> params) async {
    Response response = await _dio.post(url,
        data: params, options: Options(responseType: ResponseType.json));
    return response;
  }
}
EN

回答 1

Stack Overflow用户

发布于 2020-09-05 14:52:53

我使用这个设置,它对我来说很好。

代码语言:javascript
复制
  Future<Dio> createDioWithHeader() async {
    if (_dioWithHeader != null) return _dioWithHeader;

    String token = await appSharedPreferences.getToken();
    String userAgent = await getUserAgent();
    print('User-Agent: $userAgent');
    // base config
    _dioWithHeader = Dio(BaseOptions(
        connectTimeout: 10000,
        receiveTimeout: 10000,
        baseUrl: Config.apiBaseUrl,
        contentType: 'application/json',
        headers: {
          'Authorization': token,
          'User-Agent': userAgent
        }));

    // setup interceptors
    return addInterceptors(_dioWithHeader);
  }```
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63750601

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档