Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/http/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
http包无法在Flatter中将映射转换为查询URL_Http_Flutter_Dart_Flutter Web - Fatal编程技术网

http包无法在Flatter中将映射转换为查询URL

http包无法在Flatter中将映射转换为查询URL,http,flutter,dart,flutter-web,Http,Flutter,Dart,Flutter Web,我正在尝试使用下面的方法发出http post请求。当我运行该方法时,我会不断收到一条消息,说明已发生了一个exeption,并且指向这个utils.dart文件。从我看到的情况来看,我最好的猜测是,将我在url中提供的地图数据转换为查询字符串时出现了问题。我似乎找不到我做错了什么。我该怎么解决这个问题呢 请求方法 Future<List>getdata()async{ print("Loading ...."); String theUrl ="https://http://12

我正在尝试使用下面的方法发出http post请求。当我运行该方法时,我会不断收到一条消息,说明已发生了一个exeption,并且指向这个utils.dart文件。从我看到的情况来看,我最好的猜测是,将我在url中提供的地图数据转换为查询字符串时出现了问题。我似乎找不到我做错了什么。我该怎么解决这个问题呢

请求方法

Future<List>getdata()async{

print("Loading ....");
String theUrl ="https://http://127.0.0.1/codeishweb/notifiedUser.php";
var res = await http.post(Uri.encodeFull(theUrl),headers: {"Accept":"application/json"},body: {"notID":2},);
var responseBody = json.decode(res.body);

print("results ::$responseBody");
 //print("the response at position something::::\nHeading\n${responseBody[0][7]['post_head']}\nBody\n${responseBody[0][7]['post_body']}");

 return responseBody;
}
Futuregetdata()异步{
打印(“加载…”);
字符串URL=”https://http://127.0.0.1/codeishweb/notifiedUser.php";
var res=await http.post(Uri.encodeFull(theUrl),头:{“Accept”:“application/json”},体:{“notID”:2},);
var responseBody=json.decode(res.body);
打印(“结果:$responseBody”);
//打印(“位置某物处的响应::\n正在读取\n${responseBody[0][7]['post_head']}\n正文\n${responseBody[0][7]['post_body']}”);
返回响应体;
}
utils.dart中的错误消息

/// Converts a [Map] from parameter names to values to a URL query string.
///
///     mapToQuery({"foo": "bar", "baz": "bang"});
///     //=> "foo=bar&baz=bang"
String mapToQuery(Map<String, String> map, {Encoding encoding}) {
  var pairs = <List<String>>[];
  map.forEach((key, value) => pairs.add([
        Uri.encodeQueryComponent(key, encoding: encoding),
        Uri.encodeQueryComponent(value, encoding: encoding)
      ]));
  return pairs.map((pair) => "${pair[0]}=${pair[1]}").join("&");
}
///将[Map]从参数名转换为值,再转换为URL查询字符串。
///
///mapToQuery({“foo”:“bar”,“baz”:“bang”});
/////=>“foo=bar&baz=bang”
字符串mapToQuery(映射映射,{Encoding}){
var对=[];
map.forEach((键,值)=>pairs.add([
encodeQueryComponent(键,编码:encoding),
encodeQueryComponent(值,编码:编码)
]));
返回pairs.map((pair)=>“${pair[0]}=${pair[1]}”).join(“&”);
}

我不明白!如果您想传递查询参数,那么为什么不使用
get
request!对于我正在执行的任务,我必须使用post,而不是使用查询参数。为什么不使用post参数。尝试使用
body:json.encode({“notID”:2})
尝试用字符串文本
'2'
替换
2
,如果可能,还可以发布完整的错误堆栈