我试图计算一个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',
};
我尝试了一些解决方案,如将正文的内容连接成一个字符串,如以下,然后将其转换为字节数组并发送它的长度,但它没有工作。
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);
post - request body是x-www-form-urlencoded格式,内容长度必须正确计算。任何帮助都是感激的,谢谢。
我自己封装的。一般不需要计算。除非是特殊场合。推荐使用Okhttp3
你不需要做一个整数列表…
String bodyStr = "...";
byte[] bytes = bodyStr.getBytes(Charset.forName("UTF-8"));
int len = bytes.length;
response.setContentLength(len);
response.getOutputStream().write(bytes);
这个例子使用了来自HttpServlet的HttpServletResponse对象。我不确定这是不是你需要的。
我用过很多次,效果很好。