【问题标题】:dio : HttpException: More than one value for header set-cookiedio : HttpException: 标头 set-cookie 的值不止一个
【发布时间】:2019-03-09 17:54:26
【问题描述】:

我目前正在尝试使用 Dio 从 GET 或 POST 请求中检索多个 Set-Cookie 字段。我无法使用 HttpClient 或 Flutter 的 http 来做到这一点。

使用 Dio 会抛出异常:

HttpException: header set-cookie 有多个值

我想知道如何解决这个问题并处理多个 set-cookie 标头,然后将它们发送回 cookie 标头。

如何使用 Dart/Flutter 处理多个 Set-Cookie 标头并将它们作为 cookie 标头发送回来?

这里是 MCVE

Dio dio = new Dio();

dio.get(urlLogin).then((Response resp){
  print('-----Login-----');
  print(resp.headers.value('set-cookie'));
});

还有 StackTrace

HttpException: More than one value for header set-cookie
#0      _HttpHeaders.value (dart:_http/http_headers.dart:48:7)
#1      loginDio.<anonymous closure> (file:///home/fuguet/Prog/Dart/FPlogin/main.dart:55:24)
#2      _RootZone.runUnary (dart:async/zone.dart:1379:54)
#3      _FutureListener.handleValue (dart:async/future_impl.dart:129:18)
#4      Future._propagateToListeners.handleValueCallback (dart:async/future_impl.dart:642:45)
#5      Future._propagateToListeners (dart:async/future_impl.dart:671:32)
#6      Future._complete (dart:async/future_impl.dart:476:7)
#7      _SyncCompleter.complete (dart:async/future_impl.dart:51:12)
#8      _RootZone.runUnary (dart:async/zone.dart:1379:54)
#9      _FutureListener.handleValue (dart:async/future_impl.dart:129:18)
#10     Future._propagateToListeners.handleValueCallback (dart:async/future_impl.dart:642:45)
#11     Future._propagateToListeners (dart:async/future_impl.dart:671:32)
#12     Future._complete (dart:async/future_impl.dart:476:7)
#13     _SyncCompleter.complete (dart:async/future_impl.dart:51:12)
#14     _RootZone.runUnary (dart:async/zone.dart:1379:54)
#15     _FutureListener.handleValue (dart:async/future_impl.dart:129:18)
#16     Future._propagateToListeners.handleValueCallback (dart:async/future_impl.dart:642:45)
#17     Future._propagateToListeners (dart:async/future_impl.dart:671:32)
#18     Future._completeWithValue (dart:async/future_impl.dart:486:5)
#19     Future._asyncComplete.<anonymous closure> (dart:async/future_impl.dart:516:7)
#20     _microtaskLoop (dart:async/schedule_microtask.dart:41:21)
#21     _startMicrotaskLoop (dart:async/schedule_microtask.dart:50:5)
#22     _Timer._runTimers (dart:isolate/runtime/libtimer_impl.dart:391:30)
#23     _Timer._handleMessage (dart:isolate/runtime/libtimer_impl.dart:416:5)
#24     _RawReceivePortImpl._handleMessage (dart:isolate/runtime/libisolate_patch.dart:165:12)

【问题讨论】:

    标签: http cookies dart flutter


    【解决方案1】:

    由于可能有多个同名标头,因此您不能使用value()。而是使用[] 来检索List&lt;String&gt;

    List<String> rawCookies = resp.headers['set-cookie'];
    

    【讨论】:

    • 非常感谢你,我不知道这是可能的
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-01-08
    • 1970-01-01
    • 1970-01-01
    • 2017-04-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多