在flutter中在http请求发送时设置"content-type": "application/json"会出现报错Cannot set the body fields of a Request with content-type “application/json”javascript
请求以下:java
final putResponse = await http.put('http://192.168.201.21/user/modifyUser', body: putData, headers: {"token": userBasicsInfo.userTokenResult,"content-type": "application/json"} ).then((response){ var backResult; if(response.statusCode == 200){ Utf8Decoder utf8decoder = Utf8Decoder(); backResult = json.decode(utf8decoder.convert(response.bodyBytes)); }else{ print('数据请求错误:${response.statusCode}'); } return backResult; });
请求发送以后会出现以下报错json
E/flutter ( 7295): [ERROR:flutter/lib/ui/ui_dart_state.cc(148)] Unhandled Exception: Bad state: Cannot set the body fields of a Request with content-type "application/json".
经过jsonEncode处理要提交的参数app
final putData = jsonEncode(params); // 处理提交参数 final putResponse = await http.put('http://192.168.201.21/user/modifyUser', body: putData, headers: {"token": userBasicsInfo.userTokenResult,"content-type": "application/json"} ).then((response){ var backResult; if(response.statusCode == 200){ Utf8Decoder utf8decoder = Utf8Decoder(); backResult = json.decode(utf8decoder.convert(response.bodyBytes)); }else{ print('数据请求错误:${response.statusCode}'); } return backResult; });
处理以后再提交便可成功ui
[body]设置请求的正文。它能够是[String],[List]或[Map]。若是它是一个String,则使用[encoding]进行编码,并将其用做请求的主体。请求的内容类型将默认为“text / plain”。编码
若是[body]是List,它将用做请求正文的字节列表。url
若是[body]是Map,则使用[encoding]将其编码为表单字段。请求的内容类型将设置为"application/x-www-form-urlencoded"
; 这不能被覆盖。[encoding]默认为[utf8]。spa