标签: content-length

Java,HttpURLConnection和设置内容长度

对于PUT,我在HttpURLConnection中设置内容的长度.

urlConnection.setRequestProperty("Content-Length", "" + responseJSONArray.toString(2).getBytes("UTF8").length);
Run Code Online (Sandbox Code Playgroud)

实际的字节数是74.但是,当我查询urlConnection我返回的内容长度时-1.这是为什么?为什么长度不相等(假设我设定了这个)?

我必须设置内容长度,因为我收到了411服务器的响应.

(另外,在Sun的例子中,我看到第二个参数setRequestProperty是类型int而不是String,这看起来很奇怪.)

java android httpurlconnection content-length

13
推荐指数
1
解决办法
2万
查看次数

从多部分表单上传Content-Length标头获取文件大小

所以,我正在上传一个文件,然后下载它......但是上传标题中的Content-Length与文件大小不匹配.我猜这个计算和传输涉及到其他一些数据,但具体到底是什么?如何从Content-Length获得准确的文件大小?它甚至可能吗?

我知道有边界,也许还有其他一些东西,但检查一下:

5380216 - 5379906 = 310

"----WebKitFormBoundaryeoFyqD4zr6smwYDG".size
? 38
Run Code Online (Sandbox Code Playgroud)

所以边界大小是38 ... 310有一些5,10,31的LCD ...那些不管怎么用38以任何方式......我迷路了!

文件大小:

-rw-r--r--@  1 williamcotton  staff    5379906 Jul  2 12:02 testfile-downloaded.zip
-rw-r--r--@  1 williamcotton  staff    5379906 Jun  8 14:23 testfile-uploaded.zip
Run Code Online (Sandbox Code Playgroud)

HTTP标头

{ 
  host: 'localhost:8887',
  connection: 'keep-alive',
  'content-length': '5380217',
  'cache-control': 'max-age=0',
  origin: 'http://localhost:8887',
  'user-agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_4) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/22.0.1193.0 Safari/537.1',
  'content-type': 'multipart/form-data; boundary=----WebKitFormBoundaryeoFyqD4zr6smwYDG',
  accept: 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
  referer: 'http://localhost:8887/',
  'accept-encoding': 'gzip,deflate,sdch',
  'accept-language': 'en-US,en;q=0.8',
  'accept-charset': 'ISO-8859-1,utf-8;q=0.7,*;q=0.3' 
}
Run Code Online (Sandbox Code Playgroud)

TL;博士

文件大小为5379906

Content-Length报告为5380216

为什么?

http multipartform-data content-length http-headers

13
推荐指数
1
解决办法
1万
查看次数

如何在Spring MVC REST for JSON中设置内容长度?

我有一些代码:

@RequestMapping(value = "/products/get", method = RequestMethod.GET)
public @ResponseBody List<Product> getProducts(@RequestParam(required = true, value = "category_id") Long categoryId) {
    // some code here
    return new ArrayList<>();
}
Run Code Online (Sandbox Code Playgroud)

我如何配置Spring MVC(或MappingJackson2HttpMessageConverter.class)来默认设置正确的标题Content-Length?因为现在我的响应标头content-length等于-1.

java spring json spring-mvc content-length

13
推荐指数
1
解决办法
1万
查看次数

确定字符串长度的最有效方法!= 0?

我正在努力加快以下方面的步伐:

string s; //--> s is never null

if (s.Length != 0)
{
   <do something>
}
Run Code Online (Sandbox Code Playgroud)

问题是,看起来.Length实际上是对字符串中的字符进行计数,这比我需要的工作更多.有人知道如何加快速度吗?

或者,有没有办法确定s [0]是否存在,w/out检查字符串的其余部分?

c# string content-length

10
推荐指数
3
解决办法
3万
查看次数

如何获取Django响应对象的内容长度?

在Django中,我尝试记录请求和响应内容长度,这与Django服务器打印到stderr的内容完全相同.

[05/Apr/2011 22:59:08] "GET /pages/ HTTP/1.1" 200 332161
[05/Apr/2011 22:59:15] "GET /pages/12 HTTP/1.1" 301 0
[05/Apr/2011 22:59:15] "GET /pages/12/ HTTP/1.1" 200 361474
[05/Apr/2011 22:59:16] "GET /pages/12/load/tags/ HTTP/1.1" 200 13899
[05/Apr/2011 22:59:16] "GET /pages/12/load/comments/ HTTP/1.1" 200 82
Run Code Online (Sandbox Code Playgroud)

所以,我写了一个简单的中间件如下,但是,'Content-Length'的值总是空的.

class LogHttpResponse(object):
    def process_response(self, request, response):
        import datetime  
        print response.items()
        time_text = datetime.datetime.now().strftime('%m/%d/%Y %H:%M:%S')
        print '[%s] "%s %s" %d %s' % (time_text, request.method, request.path, 
                                      response.status_code, 
                                      response.get('Content-Length', ''))
        return response 
Run Code Online (Sandbox Code Playgroud)

我通过fire-debug检查过,响应头中有'Content-Length'.但是中间件中没有"内容长度","print response.items()"显示:

[('Content-Type', 'text/html; charset=utf-8')]
Run Code Online (Sandbox Code Playgroud)

中间件订单有什么问题吗?

django http httpresponse content-length

10
推荐指数
2
解决办法
9609
查看次数

从HTTP客户端发出PUT请求后获得"411 Length Required"

我正在开发一个实现HTTP客户端的Java程序.我测试它向服务器发送请求.GET,POST和DELETE请求正常工作.例如,在POST请求之后,我得到一个输出

Data extracted:
{"status":{"message":"ok"}}
Run Code Online (Sandbox Code Playgroud)

并且数据库反映了所做的更改.

在PUT请求之后,我得到以下指示错误的网页的html标记.

Data extracted:
<html>
<head><title>411 Length Required</title></head>
<body bgcolor="white">
<center><h1>411 Length Required</h1></center>
<hr><center>nginx/1.2.6</center>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

因此数据库没有变化.

我发现这可能与Content-Length标题有关,但我不确定.尝试添加此标头后,我的程序等待一分钟然后抛出异常,通知它无法处理服务器响应.

如果需要,我还可以提供任何代码或堆栈跟踪.

java rest http put content-length

10
推荐指数
1
解决办法
3万
查看次数

Javascript获取对象中项目列表的长度?

我目前有一个看起来像这样的Javascript对象:

Object {0: 8, 1: 9, 2: 10}

我试图获取对象中的单个项目的数量(即3),但无法弄清楚如何这样做.由于对象不是数组,我不能只调用.length().我试图huntsList[2].toString().split('.').length用逗号分割项目并以这种方式计算它们但它返回1,因为它将整个对象转换为单个字符串,如下所示:["[object Object]"].

任何关于如何实现这一点的建议都表示赞赏.

javascript object content-length

9
推荐指数
3
解决办法
2万
查看次数

IIS 7.5 ASP.NET HttpModule - 设置Response.Filter会导致分块编码

我正在尝试创建一个改变Response.Filter类似的HttpModule (对于此演示,只需将过滤器设置回自身):

public class ContentTrafficMonitor : IHttpModule
{
  public void Init( HttpApplication context )
  {
     context.BeginRequest += OnBeginRequest;
  }

  public void Dispose()
  {
  }

  private static void OnBeginRequest( object sender, EventArgs e )
  {
     var application = (HttpApplication) sender;
     application.Response.Filter = application.Response.Filter;
  }
Run Code Online (Sandbox Code Playgroud)

}

这样做会将响应的传输编码设置为chunked,而不是使用Content-Length标头.

如果我删除设置的行Response.Filter,则响应确实有Content-Length标题.我们的应用程序取决于Content-Length标题,有什么方法可以防止这种行为?

asp.net iis iis-7 httpmodule content-length

8
推荐指数
1
解决办法
1548
查看次数

如何在PHP中检查不完整的POST请求

当连接速度较慢的远程Web客户端无法发送带有multipart/form-data内容的完整POST请求但PHP仍然使用部分接收的数据来填充$_POST数组时,我遇到了问题.因此,$_POST数组中的一个值可能不完整,可能会丢失更多值.我首先尝试在Apache列表中提出相同的问题并得到一个答案,Apache不会缓冲请求体并将其作为巨型blob传递给PHP模块.

这是我的示例POST请求:

POST /test.php HTTP/1.0
Connection: close
Content-Length: 10000
Content-Type: multipart/form-data; boundary=ABCDEF

--ABCDEF
Content-Disposition: form-data; name="a"

A
--ABCDEF
Run Code Online (Sandbox Code Playgroud)

你可以看到这Content-Length10000字节,但我只发送一个var a=A.

PHP脚本是:

<?php print_r($_REQUEST); ?>
Run Code Online (Sandbox Code Playgroud)

对于我的剩余请求,Web服务器等待大约10秒钟(但我没有发送任何内容),然后返回此响应:

HTTP/1.1 200 OK
Date: Wed, 27 Nov 2013 19:42:20 GMT
Server: Apache/2.2.22 (Debian)
X-Powered-By: PHP/5.4.4-14+deb7u3
Vary: Accept-Encoding
Content-Length: 23
Connection: close
Content-Type: text/html

Array
(
     [a] => A
)
Run Code Online (Sandbox Code Playgroud)

所以这是我的问题:如何在PHP中验证邮件请求是否已完全收到?$_SERVER['CONTENT_LENGTH']将从10000请求标题显示,但有没有办法检查收到的实际内容长度?

php apache post multipartform-data content-length

8
推荐指数
1
解决办法
4703
查看次数

jq 输出空字符串时 bash readarray -t 数组赋值的问题

首先 - 一个非常简单的代码:

#!/bin/bash

a_string="string"
readarray -t a <<<"$a_string"
echo "${a[@]}"
echo "${#a[@]}"

# read empty string into array
emptystring=""
readarray -t b <<<"$emptystring"
echo "${b[@]}"
echo "${#b[@]}"

# and now - empty array
c=()
echo "${c[@]}"
echo "${#c[@]}"
Run Code Online (Sandbox Code Playgroud)

和输出

string
1

1

0
Run Code Online (Sandbox Code Playgroud)

因此,将空字符串读入 bash 数组时readarray -t会显示数组长度为 1。只有真正的空数组的长度才是 0。

我的问题 - 为什么会发生这种情况?

就我而言 - 这是我的脚本中的一个片段 - 执行 API 调用、获取 JSON 并应用 jq 过滤器:

URL_list_json=$(curl -s --request GET "$curl_request" --header "Authorization: Bearer ${token}")
readarray -t URL_names <<<"$(echo "$URL_list_json" …
Run Code Online (Sandbox Code Playgroud)

arrays indexing bash content-length jq

8
推荐指数
1
解决办法
2127
查看次数