Rest 如何从flatter调用API

Rest 如何从flatter调用API,rest,flutter,Rest,Flutter,每次我调用端点时,都会收到一条错误消息。在本例中,表示的值是静态的,但稍后这些值将被实际值替换,目标是通过Api检索数据库中的值。已检查值、顺序和条目是否存在拼写错误。如有任何见解,将不胜感激 class Search { final int id; final String location; final int employer; final String service; final int position; final String userId; Sea

每次我调用端点时,都会收到一条错误消息。在本例中,表示的值是静态的,但稍后这些值将被实际值替换,目标是通过Api检索数据库中的值。已检查值、顺序和条目是否存在拼写错误。如有任何见解,将不胜感激

class Search {
  final int id;
  final String location;
  final int employer;
  final String service;
  final int position;
  final String userId;

  Search({this.id, this.location, this.employer, this.service, this.position, this.userId});

  factory Search.fromJson(Map<String, dynamic> json) {
    return Search(
      id: json['id'],
      employer: json['employer'],
      location: json['location'],
      service: json['service'],
      position: json['position'],
    );
  }
  Map<String, String> headers = {
    'content-type': 'application/json',
    'accept': 'application/json',
    'authorization': 'ztNMKpkGM4USORPl45HGEl8EMyh1'
 };
  Map toMap() {
    var map = new Map<String, dynamic>();
    map["employer"] = employer;
    map["location"] = location;
    map["service"] = service;
    map["postion"] = position;

    return map;
  }
}

Future<Search> createSearch(
  int employer, String location, String service, int position) async {
  final http.Response response = await http.post(
      'http://m-waks/employer/asefsdgcsjdsxxx/search-employees/',
      headers: {
        HttpHeaders.authorizationHeader: 'ztNMKpkGM4USORPl45HGEl8EMyh1','Content-Type': 'application/json',
        'Accept': 'application/json'
      },
      body: jsonEncode(<String, dynamic>{
        'employer': employer,
        'location': location,
        'service': service,
        'position': position
      }));

  if (response.statusCode < 200 || response.statusCode > 400 || json == null) {
    throw new Exception("Error while fetching data");
  } else {
    return Search.fromJson(json.decode(response.body)['results']);
  }
}
错误信息如下:

[ERROR:flutter/lib/ui/ui_dart_state.cc(157)] Unhandled Exception: FormatException: Unexpected character (at character 1)
E/flutter (16592): <html>
E/flutter (16592): ^
E/flutter (16592): 
E/flutter (16592): #0      _ChunkedJsonParser.fail (dart:convert-patch/convert_patch.dart:1394:5)
E/flutter (16592): #1      _ChunkedJsonParser.parseNumber (dart:convert-patch/convert_patch.dart:1261:9)
E/flutter (16592): #2      _ChunkedJsonParser.parse (dart:convert-patch/convert_patch.dart:926:22)
E/flutter (16592): #3      _parseJson (dart:convert-patch/convert_patch.dart:31:10)
E/flutter (16592): #4      JsonDecoder.convert (dart:convert/json.dart:495:36)
E/flutter (16592): #5      JsonCodec.decode (dart:convert/json.dart:153:41)
E/flutter (16592): #6      createSearch (package:m_waks/pages/home_page.dart:68:33)
E/flutter (16592): <asynchronous suspension>
E/flutter (16592): #7      _HomePageState._buildList.<anonymous closure>.<anonymous closure> (package:m_waks/pages/home_page.dart:608:25)
E/flutter (16592): #8      State.setState (package:flutter/src/widgets/framework.dart:1148:30)
E/flutter (16592): #9      _HomePageState._buildList.<anonymous closure> (package:m_waks/pages/home_page.dart:607:13)
E/flutter (16592): #10     _InkResponseState._handleTap (package:flutter/src/material/ink_well.dart:706:14)
E/flutter (16592): #11     _InkResponseState.build.<anonymous closure> (package:flutter/src/material/ink_well.dart:789:36)
E/flutter (16592): #12     GestureRecognizer.invokeCallback (package:flutter/src/gestures/recognizer.dart:182:24)
E/flutter (16592): #13     TapGestureRecognizer.handleTapUp (package:flutter/src/gestures/tap.dart:486:11)
E/flutter (16592): #14     BaseTapGestureRecognizer._checkUp (package:flutter/src/gestures/tap.dart:264:5)
E/flutter (16592): #15     BaseTapGestureRecognizer.acceptGesture (package:flutter/src/gestures/tap.dart:236:7)
E/flutter (16592): #16     GestureArenaManager.sweep (package:flutter/src/gestures/arena.dart:156:27)
E/flutter (16592): #17     GestureBinding.handleEvent (package:flutter/src/gestures/binding.dart:222:20)
E/flutter (16592): #18     GestureBinding.dispatchEvent (package:flutter/src/gestures/binding.dart:198:22)
E/flutter (16592): #19     GestureBinding._handlePointerEvent (package:flutter/src/gestures/binding.dart:156:7)
E/flutter (16592): #20     GestureBinding._flushPointerEventQueue (package:flutter/src/gestures/binding.dart:102:7)
E/flutter (16592): #21     GestureBinding._handlePointerDataPacket (package:flutter/src/gestures/binding.dart:86:7)
E/flutter (16592): #22     _rootRunUnary (dart:async/zone.dart:1138:13)
E/flutter (16592): #23     _CustomZone.runUnary (dart:async/zone.dart:1031:19)
E/flutter (16592): #24     _CustomZone.runUnaryGuarded (dart:async/zone.dart:933:7)
E/flutter (16592): #25     _invoke1 (dart:ui/hooks.dart:273:10)
E/flutter (16592): #26     _dispatchPointerDataPacket (dart:ui/hooks.dart:182:5)
[错误:flatter/lib/ui/ui\u dart\u state.cc(157)]未处理的异常:FormatException:意外字符(在字符1处)
E/颤振(16592):
E/颤振(16592):^
E/颤振(16592):
E/flatter(16592):#0_ChunkedJsonParser.fail(dart:convert patch/convert_patch.dart:1394:5)
E/flatter(16592):#1#ChunkedJsonParser.parseNumber(dart:convert patch/convert_patch.dart:1261:9)
E/flatter(16592):#2_ChunkedJsonParser.parse(dart:convert patch/convert_patch.dart:926:22)
E/flatter(16592):#3(省道:转换补丁/转换补丁。省道:31:10)
E/flatter(16592):#4 JsonDecoder.convert(dart:convert/json.dart:495:36)
E/flatter(16592):#5jsoncodec.decode(dart:convert/json.dart:153:41)
E/Flatter(16592):#6 createSearch(软件包:m#waks/pages/home#page。dart:68:33)
E/颤振(16592):
E/Flatter(16592):#7"主页状态。"构建列表。。(套餐:m_waks/pages/home_page.省道:608:25)
E/flatter(16592):#8 State.setState(包:flatter/src/widgets/framework.dart:1148:30)
E/Flatter(16592):#9"主页状态。"构建列表。(套餐:m_waks/pages/home_page.省道:607:13)
E/颤振(16592):#10(InkResponseEstate.)(handleTap)(包装:颤振/src/材料/墨水(well.省道:706:14)
E/颤振(16592):#11#InkResponseState.build。(包装:颤振/src/材料/墨水井。省道:789:36)
E/flatter(16592):#12手势识别器.invokeCallback(包:flatter/src/signatures/recognizer.dart:182:24)
E/颤振(16592):#13 TapGestureRecognizer.handleTapUp(包:颤振/src/手势/tap.省道:486:11)
电子/颤振(16592):#14 BaseTapgestureRecognitor.#检查(软件包:颤振/src/signatures/tap.dart:264:5)
E/flatter(16592):#15 BaseTapgestureRecognitor.Accept手势(包:flatter/src/signatures/tap.dart:236:7)
E/flatter(16592):#16 GestureArenaManager.sweep(包:flatter/src/signatures/arena.dart:156:27)
E/flatter(16592):#17 GestureBinding.handleEvent(包:flatter/src/signatures/binding.dart:222:20)
E/flatter(16592):#18 GestureBinding.dispatchEvent(包:flatter/src/signatures/binding.dart:198:22)
电子/颤振(16592):#19手势绑定。#手持点事件(包装:颤振/src/手势/绑定。省道:156:7)
E/颤振(16592):#20个手势绑定。(u flushpointerreeventqueue(包装:颤振/src/手势/绑定。省道:102:7)
电子/颤振(16592):#21手势绑定。"手持指针数据包(包:颤振/src/手势/binding.dart:86:7)
E/颤振(16592):#22 RootRunnary(dart:async/zone.dart:1138:13)
E/flatter(16592):#23 _CustomZone.runUnary(dart:async/zone.dart:1031:19)
E/flatter(16592):#24 _CustomZone.runUnaryGuarded(dart:async/zone.dart:933:7)
E/颤振(16592):#25_调用1(省道:ui/挂钩。省道:273:10)
E/flatter(16592):#26 35;调度指针数据包(dart:ui/hooks.dart:182:5)

确保您可以使用邮递员或同等人员练习API。当前API正在返回HTML-可能是一条错误消息。打印响应,因为它可能包含一些关于错误的线索。我已将响应检索为字符串,它是400。普通HTTP请求被发送到HTTPS端口400错误请求。普通HTTP请求被发送到HTTPS端口
nginx/1.10.3(Ubuntu)如果我切换到https,它会抛出一个握手错误。我想问题是,在
onPressed
上调用
createSearch
之前,您需要
wait
,因此,听起来问题应该是为什么会出现握手错误,因为您的服务器似乎需要https。
[ERROR:flutter/lib/ui/ui_dart_state.cc(157)] Unhandled Exception: FormatException: Unexpected character (at character 1)
E/flutter (16592): <html>
E/flutter (16592): ^
E/flutter (16592): 
E/flutter (16592): #0      _ChunkedJsonParser.fail (dart:convert-patch/convert_patch.dart:1394:5)
E/flutter (16592): #1      _ChunkedJsonParser.parseNumber (dart:convert-patch/convert_patch.dart:1261:9)
E/flutter (16592): #2      _ChunkedJsonParser.parse (dart:convert-patch/convert_patch.dart:926:22)
E/flutter (16592): #3      _parseJson (dart:convert-patch/convert_patch.dart:31:10)
E/flutter (16592): #4      JsonDecoder.convert (dart:convert/json.dart:495:36)
E/flutter (16592): #5      JsonCodec.decode (dart:convert/json.dart:153:41)
E/flutter (16592): #6      createSearch (package:m_waks/pages/home_page.dart:68:33)
E/flutter (16592): <asynchronous suspension>
E/flutter (16592): #7      _HomePageState._buildList.<anonymous closure>.<anonymous closure> (package:m_waks/pages/home_page.dart:608:25)
E/flutter (16592): #8      State.setState (package:flutter/src/widgets/framework.dart:1148:30)
E/flutter (16592): #9      _HomePageState._buildList.<anonymous closure> (package:m_waks/pages/home_page.dart:607:13)
E/flutter (16592): #10     _InkResponseState._handleTap (package:flutter/src/material/ink_well.dart:706:14)
E/flutter (16592): #11     _InkResponseState.build.<anonymous closure> (package:flutter/src/material/ink_well.dart:789:36)
E/flutter (16592): #12     GestureRecognizer.invokeCallback (package:flutter/src/gestures/recognizer.dart:182:24)
E/flutter (16592): #13     TapGestureRecognizer.handleTapUp (package:flutter/src/gestures/tap.dart:486:11)
E/flutter (16592): #14     BaseTapGestureRecognizer._checkUp (package:flutter/src/gestures/tap.dart:264:5)
E/flutter (16592): #15     BaseTapGestureRecognizer.acceptGesture (package:flutter/src/gestures/tap.dart:236:7)
E/flutter (16592): #16     GestureArenaManager.sweep (package:flutter/src/gestures/arena.dart:156:27)
E/flutter (16592): #17     GestureBinding.handleEvent (package:flutter/src/gestures/binding.dart:222:20)
E/flutter (16592): #18     GestureBinding.dispatchEvent (package:flutter/src/gestures/binding.dart:198:22)
E/flutter (16592): #19     GestureBinding._handlePointerEvent (package:flutter/src/gestures/binding.dart:156:7)
E/flutter (16592): #20     GestureBinding._flushPointerEventQueue (package:flutter/src/gestures/binding.dart:102:7)
E/flutter (16592): #21     GestureBinding._handlePointerDataPacket (package:flutter/src/gestures/binding.dart:86:7)
E/flutter (16592): #22     _rootRunUnary (dart:async/zone.dart:1138:13)
E/flutter (16592): #23     _CustomZone.runUnary (dart:async/zone.dart:1031:19)
E/flutter (16592): #24     _CustomZone.runUnaryGuarded (dart:async/zone.dart:933:7)
E/flutter (16592): #25     _invoke1 (dart:ui/hooks.dart:273:10)
E/flutter (16592): #26     _dispatchPointerDataPacket (dart:ui/hooks.dart:182:5)