Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/dart/3.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
Flutter 如何处理请求后的响应dart httpClient_Flutter_Dart - Fatal编程技术网

Flutter 如何处理请求后的响应dart httpClient

Flutter 如何处理请求后的响应dart httpClient,flutter,dart,Flutter,Dart,所以,当涉及到发出post请求时,我遇到了关于flift http包的问题,所以我使用了dart HttpClient。我根据某个地方的描述提出了一个帖子请求,但我在得到回复时遇到了问题。这是我的密码 Future<HttpClientResponse> submit() async { print('start'); Map<String, dynamic> data = { 'title' : 'My first post' }; String jsonS

所以,当涉及到发出post请求时,我遇到了关于flift http包的问题,所以我使用了dart HttpClient。我根据某个地方的描述提出了一个帖子请求,但我在得到回复时遇到了问题。这是我的密码

 Future<HttpClientResponse> submit() async {
 print('start');
  Map<String, dynamic> data = { 'title' : 'My first post' };
  String jsonString = json.encode(data); // encode map to json
  String paramName = 'param'; // give the post param a name
  String formBody = paramName + '=' + Uri.encodeQueryComponent(jsonString);
  List<int> bodyBytes = utf8.encode(formBody); // utf8 encode
  HttpClientRequest request =
      await HttpClient().postUrl(Uri.parse('https://jsonplaceholder.typicode.com/posts'));
  // it's polite to send the body length to the server
  request.headers.set('Content-Length', bodyBytes.length.toString());
  request.headers.set('Content-Type', 'application/json');
  request.add(bodyBytes);
  print('done');
  return await (request.close());
}
Future submit()异步{
打印(“开始”);
地图数据={'title':'myfirstpost'};
字符串jsonString=json.encode(数据);//将映射编码为json
字符串paramName='param';//为post参数指定一个名称
字符串formBody=paramName+'='+Uri.encodeQueryComponent(jsonString);
List bodyBytes=utf8.encode(formBody);//utf8 encode
HttpClientRequest请求=
等待HttpClient().postrl(Uri.parse('https://jsonplaceholder.typicode.com/posts'));
//将身体长度发送给服务器是礼貌的
request.headers.set('Content-Length',bodyBytes.Length.toString());
request.headers.set('Content-Type','application/json');
添加(bodyBytes);
打印(“完成”);
返回等待(request.close());
}
如何从该请求中获得响应?

HttpClientResponse response=wait request.close();
      HttpClientResponse response = await request.close();
      response.transform(utf8.decoder).listen((contents) {
        print(data); // <- response content is here
      });
response.transform(utf8.decoder).listen((内容){ 打印(数据);//
HttpClientResponse=wait request.close();
response.transform(utf8.decoder).listen((内容){

打印(数据);//我从


或使用 我创建了一个通用方法,可以处理所有get请求

  Future<String> getRequest([var endpoints, var queryParameters]) async {
    var uri = Uri.https(NetworkUrl.BASE_URL_1, endpoints, queryParameters);
    uri.replace(queryParameters: queryParameters);
    var response =
        await http.get(Uri.encodeFull(uri.toString()));
//Retrun reponse here 
    if (response.statusCode == 200) return response.body;
  }

Future getRequest([var endpoints,var queryParameters])异步{
var uri=uri.https(NetworkUrl.BASE_URL_1,端点,查询参数);
replace(queryParameters:queryParameters);
var响应=
等待http.get(Uri.encodeFull(Uri.toString());
//在这里重新运行响应
if(response.statusCode==200)返回response.body;
}
要从上述方法中获得响应

  Future<String> deletePostApi() async {
    await NetworkRepository()
        .getRequest(NetworkUrl.deletePost + '${widget.mFeedData.post_id}')
        .then((value) {// <=value is json respone
      var dataConvertedToJSON = json.decode(value);
      print("checkEmailResp" + dataConvertedToJSON.toString());
    });
  }
Future deletePostApi()异步{
等待网络存储库()
.getRequest(NetworkUrl.deletePost+“${widget.mFeedData.post_id}”)

.然后((value){/我从


或使用 我创建了一个通用方法,可以处理所有get请求

  Future<String> getRequest([var endpoints, var queryParameters]) async {
    var uri = Uri.https(NetworkUrl.BASE_URL_1, endpoints, queryParameters);
    uri.replace(queryParameters: queryParameters);
    var response =
        await http.get(Uri.encodeFull(uri.toString()));
//Retrun reponse here 
    if (response.statusCode == 200) return response.body;
  }

Future getRequest([var endpoints,var queryParameters])异步{
var uri=uri.https(NetworkUrl.BASE_URL_1,端点,查询参数);
replace(queryParameters:queryParameters);
var响应=
等待http.get(Uri.encodeFull(Uri.toString());
//在这里重新运行响应
if(response.statusCode==200)返回response.body;
}
要从上述方法中获得响应

  Future<String> deletePostApi() async {
    await NetworkRepository()
        .getRequest(NetworkUrl.deletePost + '${widget.mFeedData.post_id}')
        .then((value) {// <=value is json respone
      var dataConvertedToJSON = json.decode(value);
      print("checkEmailResp" + dataConvertedToJSON.toString());
    });
  }
Future deletePostApi()异步{
等待网络存储库()
.getRequest(NetworkUrl.deletePost+“${widget.mFeedData.post_id}”)

.then((value){/
submit().then((response){…})
@pskink提交方法在哪里?你想什么时候使用它?在某个按钮的click listener上?@pskink我在一个Flitter应用程序中使用它。我有一个按钮调用submit方法,所以我不明白你前面的问题:
“提交方法在哪里”
如果您已经在侦听器中调用了
submit()
方法,那么((响应){…})
@pskink提交方法在哪里?你想什么时候使用它?在一些按钮的click listener上?@pskink我在一个Flitter应用程序中使用它。我有一个按钮调用提交方法,所以我不理解你前面的问题:
“如果你已经调用了
submit()
方法,但我不能像response.body那样调用来获取响应的值,但我不能像response.body那样调用来获取响应的值我不想使用flatter http包,因为我在使用它时会出错。谢谢,我已经得到了它,而且有人之前已经建议过了。但是谢谢你,我对你的answ投了赞成票erI不想使用Flatter http包,因为我在使用它时会出错。谢谢,我已经得到了它,而且之前有人已经建议过了。但是谢谢你,我对你的答案投了赞成票