我正在使用这个:
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;
}
Run Code Online (Sandbox Code Playgroud)
从我的 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)
Run Code Online (Sandbox Code Playgroud)
但我确信 API 返回 json,而不是 HTML。
到底是怎么回事?我的 API 甚至不返回 HTML,它怎么能抱怨有文档类型呢?
默认情况下,大多数 Web 应用服务器在发生错误时会回复各种 HTML 页面(404 未找到、401 未授权、500 内部异常等)
尝试检查响应的 HTTP 状态代码,而不是假设它始终是成功的 JSON 响应。如果状态码不是 200,则可能不是 JSON。
| 归档时间: |
|
| 查看次数: |
3619 次 |
| 最近记录: |