栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

如何在URL中使用URL编码的主体发出HTTP POST请求?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

如何在URL中使用URL编码的主体发出HTTP POST请求?

您需要添加三个附加步骤:首先,您需要将json映射转换为String(使用json.enpre),然后,如果要将其作为application /
x-www-form-urlenpred发送,则需要对其进行Uri编码。最后,您需要给要发布的参数指定名称。

例如(请注意,这使用的是dart:io HttpClient,但基本相同):

  Future<HttpClientResponse> foo() async {    Map<String, dynamic> jsonMap = {      'homeTeam': {'team': 'Team A'},      'awayTeam': {'team': 'Team B'},    };    String jsonString = json.enpre(jsonMap); // enpre map to json    String paramName = 'param'; // give the post param a name    String formBody = paramName + '=' + Uri.enpreQueryComponent(jsonString);    List<int> bodyBytes = utf8.enpre(formBody); // utf8 enpre    HttpClientRequest request =        await _httpClient.post(_host, _port, '/a/b/c');    // it's polite to send the body length to the server    request.headers.set('Content-Length', bodyBytes.length.toString());    // todo add other headers here    request.add(bodyBytes);    return await request.close();  }

上面是针对dart:io版本的(当然,您可以在Flutter中使用)如果您想坚持使用package:http版本,则需要对Map进行一些调整。正文必须是Map
。您需要确定所需的POST参数。您是否想要两个:homeTeam和awayTeam?还是一个,例如teamJson?

此代码

  Map<String, String> body = {    'name': 'doodle',    'color': 'blue',    'homeTeam': json.enpre(      {'team': 'Team A'},    ),    'awayTeam': json.enpre(      {'team': 'Team B'},    ),  };  Response r = await post(    url,    body: body,  );

在电线上产生这个

名称= doodle&color = blue&homeTeam =%7B%22team%22%3A%22Team + A%22%7D&awayTeam
=%7B%22team%22%3A%22Team + B%22%7D

或者,这

  Map<String, String> body = {    'name': 'doodle',    'color': 'blue',    'teamJson': json.enpre({      'homeTeam': {'team': 'Team A'},      'awayTeam': {'team': 'Team B'},    }),  };  Response r = await post(    url,    body: body,  );

在电线上产生这个

名称= doodle&color = blue&teamJson
=%7B%22homeTeam%22%3A%7B%22team%22%3A%22Team +
A%22%7D%2C%22awayTeam%22%3A%7B%22team%22%3 %%% Team + B %22%7D%7D

package:http客户端负责:对Uri.enpreQueryComponent进行编码,对utf8进行编码(请注意,这是默认设置,因此无需指定它),并在Content-
Length标头中发送长度。您仍然必须进行json编码。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/409916.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号