Rest 如何从flatter调用API
每次我调用端点时,都会收到一条错误消息。在本例中,表示的值是静态的,但稍后这些值将被实际值替换,目标是通过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
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)