接收长度与发送长度不同
Received length differs from sent 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
header 中的字节数。但是,在 Python 中,当我 运行 这个:
cl = cherrypy.request.headers['Content-Length']
rawbody = cherrypy.request.body.read()
print "{} bytes, {}".format(len(rawbody), cl)
数字cl
和len(rawbody)
不同。
怎么可能?
你的服务器应该发送一个 "close header" 这样客户端就不会为他发送结束流。
也许您忘记用 out.close();
关闭流?
我正在使用 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
header 中的字节数。但是,在 Python 中,当我 运行 这个:
cl = cherrypy.request.headers['Content-Length']
rawbody = cherrypy.request.body.read()
print "{} bytes, {}".format(len(rawbody), cl)
数字cl
和len(rawbody)
不同。
怎么可能?
你的服务器应该发送一个 "close header" 这样客户端就不会为他发送结束流。
也许您忘记用 out.close();
关闭流?