当前位置: 首页 > 知识库问答 >
问题:

如何计算Http Post请求的请求体的内容长度

欧阳正卿
2023-03-14

我试图计算http post请求的请求体的内容长度,但我不断得到错误,表明内容长度错误。请求正文如下所示:

Map<String, String> body = {
  'grant_type': 'authorization_code',
  'client_id': 'clientid',
  'code': authCode,
  'redirect_uri': 'http://localhost:8080/login/callback',
  'code_verifier':
      'codeverifier',
};

我尝试了两种解决方案,比如将正文的内容连接成一个字符串,比如following,然后将其转换成字节数组并发送其长度,但没有成功。

String bodyStr = "grant_type:authorization_code" +
    "client_id:clientid" +
    "code:{$authCode}" +
    "redirect_uri:http://localhost:8080/login/callback" +
    "code_verifier:codeverifier";
    List<int> bytes = utf8.encode(bodyStr);

帖子请求正文是x-wow-form-urlencoded格式,内容长度必须正确计算。任何帮助都很感激,谢谢。

共有2个答案

益思博
2023-03-14

我自己封装的。一般不用我算。除非是特殊场合。推荐Okhttp

谷博艺
2023-03-14

您不需要列出整数。。。

String bodyStr = "...";
byte[] bytes = bodyStr.getBytes(Charset.forName("UTF-8"));
int len = bytes.length;
response.setContentLength(len);
response.getOutputStream().write(bytes);

示例使用的是来自HttpServlet的HttpServlet响应对象。不确定那是不是你需要的。

我已经使用了相当数量的这个,它工作得很好。

 类似资料:
  • 对传递的 URL 发出一个 POST 请求。 使用 XMLHttpRequest web api 对给定的url 发出一个 post 请求。 用 setRequestHeader 方法设置 HTTP 请求头的值。 通过调用给定的 callback 和 responseText 来处理 onload 事件。 通过运行提供的 err 函数,处理onerror事件。 省略第三个参数 data ,不发送数

  • 问题内容: 我有一个涉及httprequest的错误,有时会发生,所以我想记录HttpGet和HttpPost请求的内容。 所以,让我们说,我这样创建HttpGet: 这是我想要的字符串表示形式: 对于发布请求,我还想获取内容字符串。 在Java for Android中最简单的方法是什么? 问题答案: 您可以使用以下命令打印请求类型: 您可以按此处所述打印所有标题: 要打印所有请求参数,请使用以

  • 对于Android来说,在java中最简单的方法是什么?

  • 我需要一个java程序来生成以下请求。我正在使用Apache HttpClient Library,但仍然无法生成这样的请求: 这是我的python程序生成的,我编写了一个等效的java程序。但它扔403。 2012-09-10 15:12:05G信息:G2OAuth auth data=“3,0.0.0,0.0.0,1347289925,3223833979,crlakamai”2012-09-

  • 我有一个请求我的服务器,响应是一个类型,如下所示: 我通过如下方式设置改装请求: 并准备如下请求: 但是,始终无法获得响应的代码,并且该代码是”。 如何获得html响应? 非常感谢。

  • 问题内容: 将请求正文与GET请求一起传递是否违反REST风格? 例如在Elasticsearch中过滤一些信息 甚至设计了一些工具来避免GET请求中的请求主体(例如邮递员) 问题答案: 从RFC: GET请求消息中的有效负载没有定义的语义。在GET请求上发送有效内容正文可能会导致某些现有实现拒绝该请求。 换句话说,这不是禁止的,但是它是未定义的行为,应避免使用。HTTP客户端,服务器和代理可以随