Java HttpURLConnection:内容长度计算

Java HttpURLConnection:内容长度计算,java,http,rest,httpurlconnection,urlconnection,Java,Http,Rest,Httpurlconnection,Urlconnection,我目前正在为bitbucket发布RESTful API开发一个库。我取得了良好的进展,现在我将处理要求HTTP PUT请求的部分 现在我被卡住了,因为HTTP错误代码411所需的长度。通过谷歌搜索,我发现如下内容: 现在我的问题是:什么是精确测量的 查询字符串 URL编码的查询字符串 只有参数的值 是connection.setRequestProperty(“Content-Length”,String.valueOf())设置内容长度属性的合适方法 我们赞赏这些例子。提前谢谢 编辑:

我目前正在为bitbucket发布RESTful API开发一个库。我取得了良好的进展,现在我将处理要求HTTP PUT请求的部分

现在我被卡住了,因为HTTP错误代码411所需的长度。通过谷歌搜索,我发现如下内容:

现在我的问题是:什么是精确测量的

  • 查询字符串
  • URL编码的查询字符串
  • 只有参数的值
connection.setRequestProperty(“Content-Length”,String.valueOf())设置内容长度属性的合适方法

我们赞赏这些例子。提前谢谢


编辑:

例如,您可以使用bitbucket wiki条目中的以下curl示例来解释计算:

curl -X PUT -d "content=Updated%20Content" \
https://api.bitbucket.org/1.0/repositories/sarahmaddox/sarahmaddox/issues/1/

你在做这个请求,对吧。内容长度是请求正文的字节数。就你而言

int content-length = "content=Updated%20Content".getBytes("UTF-8").length;
什么是精确测量的

url编码的查询字符串(在请求/实体正文中时)

HTTP规范关于:

服务器拒绝接受请求 没有定义内容的请求- 长度。客户可以重复上述步骤 如果添加了有效的 内容长度标头字段包含 中消息正文的长度 请求消息

上的HTTP规范:

内容长度实体标题字段 指示实体主体的大小, 十进制八位字节数

HTTP规范关于:

消息的实体长度是 消息正文在任何 已应用转移编码


总结一下,如果要发送未压缩的UTF-8字符串,请确定要发送的字节:

Identity( UTF-8( "content=Updated%20Content" ) )
内容长度设置为输出的字节数


如果您正在发送UTF-8数据,我也强烈建议您设置一个标头。

请不要在未指定字符集的情况下使用
getBytes
方法。我仍然是一个lil卡滞者,但我认为这取决于bitbucket api,而不是我如何处理请求。
entity-body := Content-Encoding( Content-Type( data ) )
Identity( UTF-8( "content=Updated%20Content" ) )