【问题标题】:Flutter http client gives FormatException: Unexpected character (at character 1) <!DOCTYPE html>Flutter http 客户端给出 FormatException: Unexpected character (at character 1) <!DOCTYPE html>
【发布时间】:2020-02-29 03:39:32
【问题描述】:

我正在使用这个:

Future<Object> get(String endpoint) async {
  var httpClientRequest = await httpClient.getUrl(Uri.parse(_url + endpoint));
  _addCookies(httpClientRequest);
  final httpClientResponse = await httpClientRequest.close();
  return httpClientResponse
           .transform(utf8.decoder)
           .transform(json.decoder)
           .first;
}

从这里https://stackoverflow.com/a/60344779/10116440

从我的 API 中获取 json。但我明白了

Unhandled exception:
FormatException: Unexpected character (at character 1)
<!DOCTYPE html>
^

#0      _ChunkedJsonParser.fail (dart:convert-patch/convert_patch.dart:1394:5)
#1      _ChunkedJsonParser.parseNumber (dart:convert-patch/convert_patch.dart:1261:9)
#2      _ChunkedJsonParser.parse (dart:convert-patch/convert_patch.dart:926:22)
#3      _JsonStringDecoderSink.addSlice (dart:convert-patch/convert_patch.dart:1480:13)
#4      _JsonStringDecoderSink.add (dart:convert-patch/convert_patch.dart:1485:5)
#5      _ConverterStreamEventSink.add (dart:convert/chunked_conversion.dart:74:18)
#6      _SinkTransformerStreamSubscription._handleData (dart:async/stream_transformers.dart:122:24)
#7      _RootZone.runUnaryGuarded (dart:async/zone.dart:1316:10)
#8      _BufferingStreamSubscription._sendData (dart:async/stream_impl.dart:338:11)
#9      _BufferingStreamSubscription._add (dart:async/stream_impl.dart:265:7)
#10     _SinkTransformerStreamSubscription._add (dart:async/stream_transformers.dart:70:11)
#11     _EventSinkWrapper.add (dart:async/stream_transformers.dart:17:11)
#12     _StringAdapterSink.add (dart:convert/string_conversion.dart:238:11)
#13     _StringAdapterSink.addSlice (dart:convert/string_conversion.dart:243:7)
#14     _Utf8ConversionSink.addSlice (dart:convert/string_conversion.dart:314:20)
#15     _Utf8ConversionSink.add (dart:convert/string_conversion.dart:307:5)
#16     _ConverterStreamEventSink.add (dart:convert/chunked_conversion.dart:74:18)
#17     _SinkTransformerStreamSubscription._handleData (dart:async/stream_transformers.dart:122:24)
#18     _RootZone.runUnaryGuarded (dart:async/zone.dart:1316:10)
#19     _BufferingStreamSubscription._sendData (dart:async/stream_impl.dart:338:11)
#20     _BufferingStreamSubscription._add (dart:async/stream_impl.dart:265:7)
#21     _ForwardingStreamSubscription._add (dart:async/stream_pipe.dart:134:11)
#22     _ForwardingStream._handleData (dart:async/stream_pipe.dart:100:10)
#23     _ForwardingStreamSubscription._handleData (dart:async/stream_pipe.dart:166:13)
#24     _RootZone.runUnaryGuarded (dart:async/zone.dart:1316:10)
#25     _BufferingStreamSubscription._sendData (dart:async/stream_impl.dart:338:11)
#26     _DelayedData.perform (dart:async/stream_impl.dart:593:14)
#27     _StreamImplEvents.handleNext (dart:async/stream_impl.dart:709:11)
#28     _PendingEvents.schedule.<anonymous closure> (dart:async/stream_impl.dart:669:7)
#29     _microtaskLoop (dart:async/schedule_microtask.dart:43:21)
#30     _startMicrotaskLoop (dart:async/schedule_microtask.dart:52:5)
#31     _runPendingImmediateCallback (dart:isolate-patch/isolate_patch.dart:118:13)
#32     _RawReceivePortImpl._handleMessage (dart:isolate-patch/isolate_patch.dart:175:5)

但我很肯定 API 返回的是 json,而不是 HTML。

发生了什么事?我的 API 连 HTML 都不返回,怎么会抱怨有 doctype?

【问题讨论】:

  • 给人们时间回答很好。在这里你已经得到了一个完美的答案,所以你还在等什么?如果答案不能回答您的问题,请澄清问题。它确实看起来像一个正确的答案。

标签: http flutter dart


【解决方案1】:

默认情况下,大多数 Web 应用服务器在发生错误时会回复各种 HTML 页面(404 未找到、401 未授权、500 内部异常等)

尝试检查响应的 HTTP 状态代码,而不是假设它始终是成功的 JSON 响应。如果状态码不是 200,则可能不是 JSON。

【讨论】:

    猜你喜欢
    • 2020-08-26
    • 1970-01-01
    • 2020-09-12
    • 2021-10-02
    • 2019-10-08
    • 2020-10-20
    • 2021-06-17
    • 1970-01-01
    • 2020-05-08
    相关资源
    最近更新 更多