收到的长度与发送长度

时间:2017-12-04 21:36:10

标签: android python httpurlconnection cherrypy content-length

我正在使用Android应用程序将base64编码的字符串发送到CherryPy服务器。 Android代码的工作方式如下:

URL url = new URL("http://foo.bar/blabla");

HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setRequestProperty("Content-Type", "application/octet-stream");
conn.setDoOutput(true);
conn.setFixedLengthStreamingMode(base64s.length());

OutputStream out = new BufferedOutputStream(conn.getOutputStream());
out.write(base64s.getBytes());

因此,您说发送的字节数等于Content-Length标头中的字节数。但是,在Python中,当我运行它时:

cl = cherrypy.request.headers['Content-Length']
rawbody = cherrypy.request.body.read()

print "{} bytes, {}".format(len(rawbody), cl)

数字cllen(rawbody)不同。

怎么可能?

2 个答案:

答案 0 :(得分:0)

您的服务器应该发送一个"关闭标题"所以客户端不会为他提供最终结果。

答案 1 :(得分:0)

也许您忘了用out.close();关闭广告连播?