@POST @Path("/getphotos") @Produces(MediaType.TEXT_HTML) public String getPhotos() throws IOException{ // DataInputStream rd = new DataInputStream(request.getInputStream()); BufferedReader rd = new BufferedReader( new InputStreamReader(request.getInputStream(),"UTF-8") ); String line = null; String message = new String(); final StringBuffer buffer = new StringBuffer(2048); while ((line = rd.readLine()) != null) { // buffer.append(line); message += line; } System.out.println(message); JsonObject json = new JsonObject(message); return message; }
上面的代码是用于我的servlet.其目的是获取流,从中创建一个Json文件,然后将Json发送给客户端.
但是为了使Json,我必须使用“while”循环读取BufferedReader对象rd.不过,我想将rd转换成尽可能少的代码行的字符串.我怎么做?
解决方法
我建议使用公共IO库 – 那么它是一个简单的1班:
String message = org.apache.commons.io.IoUtils.toString(rd);
当然,请注意,使用这种机制,可以通过发送一个永远不会停止的数据流来填满您的服务器内存,从而发生拒绝服务攻击.