微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Java HttpURLConnection:内容长度计算

如何解决Java HttpURLConnection:内容长度计算

| 我目前正在开发用于位桶问题RESTful API的库。我取得了不错的进展,现在我要解决“更新问题”一节,该节需要HTTP PUT请求。 现在,由于HTTP错误代码“ 0”,我陷入了困境。经过一番谷歌搜索,我发现了以下代码示例:
// CORRECT: get a UTF-8 encoded byte array from the response
// String and set the content-length to the length of the
// resulting byte array.
String response = [insert XML with UTF-8 characters here];
byte[] responseBytes;
try {
    responseBytes = response.getBytes(\"UTF-8\");
}
catch ( UnsupportedEncodingException e ) {
    System.err.print(\"My computer hates UTF-8\");
}

this.contentLength_ = responseBytes.length;
现在我的问题是:什么是精确测量的? 查询字符串 urlencoded查询字符串 仅参数的值... ?? ѭ2是设置内容长度属性的合适方法吗? 实例赞赏。提前致谢。 编辑: 例如,您可以使用bitbucket Wiki条目中的以下curl示例来解释计算:
curl -X PUT -d \"content=Updated%20Content\" \\
https://api.bitbucket.org/1.0/repositories/Sarahmaddox/Sarahmaddox/issues/1/
    

解决方法

        您正在执行请求,对。 content-length是请求正文的字节数。就你而言
int content-length = \"content=Updated%20Content\".getBytes(\"UTF-8\").length;
到底是什么测量? url编码的查询字符串(在请求/实体正文中)     ,        411上的HTTP规范:   服务器拒绝接受   没有定义内容的请求-   长度。客户可以重复   请求是否添加了有效的   Content-Length标头字段包含   消息正文中的长度   请求消息。 Content-Length标头上的HTTP规范:   内容长度实体标题字段   指示实体的大小,   OCTET的十进制数 关于HTTP实体长度的HTTP规范:
entity-body := Content-Encoding( Content-Type( data ) )
  消息的实体长度是   消息正文之前的长度   传输编码已被应用。 总结一下,如果您要发送未压缩的UTF-8字符串,可以确定要发送的字节为:
Identity( UTF-8( \"content=Updated%20Content\" ) )
Content-Length设置为输出的字节数。 如果您要发送UTF-8数据,我也强烈建议您设置一个Content-Type标头。     

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。