【问题标题】:Unhandled Exception: FormatException: Unexpected end of input (at character 1)未处理的异常:FormatException:输入意外结束(在字符 1 处)
【发布时间】:2019-12-19 18:48:38
【问题描述】:

我正在尝试在 Flutter 中使用 http 解析以下地图

 Map<String, dynamic> map = {
      "studentID": "${widget.userId}".toString(),
      "gstNumber": "${widget.feesBloc?.gstNumberValue}" ?? "",
      "entityName": "${widget.feesBloc?.gstEntityValue}" ?? "",
      "paymentInfo": {
        "amount": "$tempAmount".toString(),
        "razorpay_payment_id": "$razorPaymentId" ?? "",
        "usedWB": "$_walletAmount"
      },
      "feeInfo": {
        "feeID": "${widget.feesData.feeID}".toString(),
        "type": "${widget.feesData.type}",
        "category": "${widget.feesData.category}".toString(),
        "feeCode": "${widget.feesData.feeCode}".toString(),
        "feeShortName": "${widget.feesData.feeShortName}" ?? "",
        "basicAMT": "${widget.feesData.basicAMT}".toString(),
        "dueDate": "${widget.feesData.dueDate}".toString(),
        "grandAMT": "${widget.feesData.grandAMT}",
        "status": "${widget.feesData.status}".toString(),
        "collectionID": "${widget.feesData.collectionID}".toString(),
        "dateStatus": "${widget.feesData.dateStatus}".toString(),
        "collectionDetailStatus": "-1",
        "schemeInfo": {
          "schemeID": "1",
          "schemeNo": "${widget.feesData.schemeInfo.schemeNo}",
          "schemeTxt": "a" ?? "",
          "schemeStatus": "${widget.feesData.schemeInfo.schemeStatus}"
        },
        "lateFeeInfo": {
          "lateDays": "${widget.feesData.lateFeeInfo.lateDays}",
          "lateFeePerDay":
              "${widget.feesData.lateFeeInfo.lateFeePerDay}".toString(),
          "lateFeeAMT": "${widget.feesData.lateFeeInfo.lateFeeAMT}"
        },
        "taxInfo": {
          "tax": "${widget.feesData.taxInfo.tax}".toString(),
          "taxAMT": "${widget.feesData.taxInfo.taxAMT}".toString(),
          "taxAddedAMT": "${widget.feesData.taxInfo.taxAddedAMT}"
        },
        "scholarshipInfo": {
          "scholarship":
              "${widget.feesData.scholarshipInfo.scholarship}".toString(),
          "scholarshipAMT": "${widget.feesData.scholarshipInfo.scholarshipAMT}"
        }
      }

下面是我的api代码

Map<String, String> headers = {
      'Content-type': 'application/json',
      'Accept': 'application/json',
    };

    final response = await http.post(FEE_PAYMENT_URL,
        headers: headers, body: json.encode(jsonMap));

我的状态码为 200,但 response.body 没有返回任何内容,因此解码失败

以下是完整的错误

Unhandled Exception: FormatException: Unexpected end of input (at character 1)
E/flutter ( 8915): 
E/flutter ( 8915): ^
E/flutter ( 8915): 
E/flutter ( 8915): #0      _ChunkedJsonParser.fail (dart:convert-patch/convert_patch.dart:1392:5)
E/flutter ( 8915): #1      _ChunkedJsonParser.close (dart:convert-patch/convert_patch.dart:510:7)
E/flutter ( 8915): #2      _parseJson (dart:convert-patch/convert_patch.dart:30:10)
E/flutter ( 8915): #3      JsonDecoder.convert (dart:convert/json.dart:493:36)
E/flutter ( 8915): #4      JsonCodec.decode (dart:convert/json.dart:151:41)
E/flutter ( 8915): #5      FeePaymentApiProvider.submitFeePayment (package:dice/resources/fee_payment/fee_payment_api_provider.dart:22:42)
E/flutter ( 8915): <asynchronous suspension>
E/flutter ( 8915): #6      FeePaymentRepository.submitFeePayment (package:dice/resources/fee_payment/fee_payment_repository.dart:14:48)
E/flutter ( 8915): <asynchronous suspension>
E/flutter ( 8915): #7      FeesBloc.submitFeePayment (package:dice/bloc/fees_bloc/fees_bloc.dart:54:40)
E/flutter ( 8915): <asynchronous suspension>
E/flutter ( 8915): #8      _PresentFeesListItemState._submitDataToServerAfterPaymentIsSuccessful (package:dice/screens/fees/present_fees/present_fees_list_item.dart:517:21)
E/flutter ( 8915): #9      _PresentFeesListItemState.calculateFees (package:dice/screens/fees/present_fees/present_fees_list_item.dart:202:9)
E/flutter ( 8915): #10     _PresentFeesListItemState.build.<anonymous closure>.<anonymous closure> (package:dice/screens/fees/present_fees/present_fees_list_item.dart:165:21)
E/flutter ( 8915): #11     _rootRunUnary (dart:async/zone.dart:1132:38)
E/flutter ( 8915): #12     _CustomZone.runUnary (dart:async/zone.dart:1029:19)
E/flutter ( 8915): #13     _FutureListener.handleValue (dart:async/future_impl.dart:126:18)
E/flutter ( 8915): #14     Future._propagateToListeners.handleValueCallback (dart:async/future_impl.dart:639:45)
E/flutter ( 8915): #15     Future._propagateToListeners (dart:async/future_impl.dart:668:32)
E/flutter ( 8915): #16     Future._complete (dart:async/future_impl.dart:473:7)
E/flutter ( 8915): #17     _SyncCompleter.complete (dart:async/future_impl.dart:51:12)
E/flutter ( 8915): #18     _AsyncAwaitCompleter.complete (dart:async-patch/async_patch.dart:28:18)
E/flutter ( 8915): #19     _completeOnAsyncReturn (dart:async-patch/async_patch.dart:294:13)
E/flutter ( 8915): #20     checkInternetConnection (package:dice/helpers/check_internet_connection.dart)
E/flutter ( 8915): <asynchronous suspension>
E/flutter ( 8915): #21     _PresentFeesListItemState.build.<anonymous closure> (package:dice/screens/fees/present_fees/present_fees_list_item.dart:163:17)
E/flutter ( 8915): #22     _InkResponseState._handleTap (package:flutter/src/material/ink_well.dart:635:14)
E/flutter ( 8915): #23     _InkResponseState.build.<anonymous closure> (package:flutter/src/material/ink_well.dart:711:32)
E/flutter ( 8915): #24     GestureRecognizer.invokeCallback (package:flutter/src/gestures/recognizer.dart:182:24)
E/flutter ( 8915): #25     TapGestureRecognizer._checkUp (package:flutter/src/gestures/tap.dart:365:11)
E/flutter ( 8915): #26     TapGestureRecognizer.acceptGesture (package:flutter/src/gestures/tap.dart:312:7)
E/flutter ( 8915): #27     GestureArenaManager.sweep (package:flutter/src/gestures/arena.dart:156:27)
E/flutter ( 8915): #28     _WidgetsFlutterBinding&BindingBase&GestureBinding.handleEvent (package:flutter/src/gestures/binding.dart:222:20)
E/flutter ( 8915): #29     _WidgetsFlutterBinding&BindingBase&GestureBinding.dispatchEvent (package:flutter/src/gestures/binding.dart:198:22)
E/flutter ( 8915): #30     _WidgetsFlutterBinding&BindingBase&GestureBinding._handlePointerEvent (package:flutter/src/gestures/binding.dart:156:7)
E/flutter ( 8915): #31     _WidgetsFlutterBinding&BindingBase&GestureBinding._flushPointerEventQueue (package:flutter/src/gestures/binding.dart:102:7)
E/flutter ( 8915): #32     _WidgetsFlutterBinding&BindingBase&GestureBinding._handlePointerDataPacket (package:flutter/src/gestures/binding.dart:86:7)
E/flutter ( 8915): #33     _rootRunUnary (dart:async/zone.dart:1136:13)
E/flutter ( 8915): #34     _CustomZone.runUnary (dart:async/zone.dart:1029:19)
E/flutter ( 8915): #35     _CustomZone.runUnaryGuarded (dart:async/zone.dart:931:7)
E/flutter ( 8915): #36     _invoke1 (dart:ui/hooks.dart:250:10)
E/flutter ( 8915): #37     _dispatchPointerDataPacket (dart:ui/hooks.dart:159:5)
E/flutter ( 8915): 

任何帮助将不胜感激。我在堆栈上完成了以下问题,但它们没有用。我正在将复杂的地图结构以正确的方式传递给我的 dart 中的 api,该 api 在邮递员上运行良好

【问题讨论】:

  • 我们如何帮助您解决这个问题?您基本上是在问我们为什么响应正文为空,但我们对您的 FEE_PAYMENT_URL API 一无所知。如果响应代码为 200,则表示一切正常。您对响应正文有什么期望?
  • 你能用邮递员getpostman.com测试你的api并粘贴你得到的JSON字符串吗?
  • @chunhunghan 我刚刚收到一条消息,以 json 格式显示成功

标签: http flutter dart


【解决方案1】:

错误应该指出正在尝试解析的意外格式FormatException: Unexpected end of input (at character 1)。从您共享的日志中,它似乎突出显示了一个空值。您正在解析的 json 很可能是空的。您可以在解析之前添加检查器以避免此问题。

if(response.body.isNotEmpty){
  // Do something
  json.decode(response.body);
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-08-17
    • 2022-07-31
    • 2020-03-07
    • 1970-01-01
    • 2021-10-20
    • 2022-11-07
    • 1970-01-01
    • 2021-07-31
    相关资源
    最近更新 更多