2

我意识到这个问题类似于this one,但我认为我是一个不同的案例,因为我试图张贴图像。Android HttpUrlConnection发布图片 - 内容长度指的是什么?

我从Android活动将图像上传到服务器,并且在某些设备上上传时收到“411 - 需要的长度”错误报告。我无法在这里重现错误,但用户在与我们可以在不同国家/地区进行测试的设备报告过此错误。

我们在一个带有几个参数的URL上打开一个HttpUrlConnection。这些是字符串和UUID。它看起来像这样:

http://ourdomainname.net/OurMobileServices/ImageUploadhandler.ashx?filename=image20121220_120734_-901992324.jpeg&username=testusername&note=&uploadid=b4a1c35b-b869-4f7e-a645-6a4a180f0985&taskid=7f02deb8-c078-45c4-bc37-99e418e8cdf9 

然后我们使用的getOutputStream得到一个OutputStream,这是我们写的图像文件的字节。

我一直在寻找有关411错误和设置HttpUrlConnection对象的内容长度的信息。好像我可以设置内容长度的请求属性的东西,如:在那里

connection.setFixedLengthStreamingMode() 

随着内容长度数:

connection.setRequestProperty("Content-Length", String.valueOf(<mycomputedInt>)); 

或者,我可以使用。

我的问题是:内容长度应该测量什么?是指:

a)整个URL包含参数?

b)URL编码参数?

c)我上传的图像的字节数组的长度?

d)图像字节数组的长度和URL编码参数? e)其他完全不同的东西?

如果需要,我可以发布代码或更多细节 - 我只是很困惑这一个,并且无法在本地重现错误。我可以很好地从模拟器,手机和平板电脑上传图像。任何帮助将不胜感激,谢谢。

回答

2

Content-Length应该是您写入OutputStream的任何内容的长度。所以在这种情况下,答案是C.

我认为this site很清楚地解释了HTTP请求的结构,您可能会发现它很有帮助。

+0

谢谢!只是为了确认,是否需要使用字节数组的长度?或者我必须先用其他方法做些什么? – breadbin

+0

字节数组的长度,是的。 – 1615903

+0

谢谢,这工作完美。 – breadbin

相关问题