不用GZIP,一点问题都没有,使用GZIP就出问题,描述如下:
点击按钮发送数据到服务端,然后接收服务端返回的数据
点击按钮,每隔一次接收服务端的数据失败,一次成功一次失败,非常郁闷!搞了一天了,请求帮助啊~~Android端代码:
public static String send(String url, String content, String contentType) throws Exception {
//建立连接
HttpURLConnection conn = (HttpURLConnection) new URL(url).openConnection();
conn.setDoInput(true);
conn.setDoOutput(true);
conn.setUseCaches(false);
if (contentType != null) {
conn.setRequestProperty("content-type", contentType);
} else {
conn.setRequestProperty("content-type", CONTENT_TYPE_HTML);
}
conn.setConnectTimeout(10000);
conn.setReadTimeout(60000);
conn.setRequestMethod("POST");
conn.connect();

//发送数据
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(new GZIPOutputStream(conn.getOutputStream()), "GBK"));
bw.write(content);
bw.flush();
bw.close();


//接收返回数据
StringBuffer sb = new StringBuffer();
BufferedReader br = new BufferedReader(new InputStreamReader(new GZIPInputStream(conn.getInputStream()), "GBK"));
String str = null;
while ((str = br.readLine()) != null) {
sb.append(str);
}
br.close();

conn.disconnect();
return sb.toString();
}服务端代码:
/**
 * 接收HTTP数据
 * @param request
 * @param response
 * @return 数据
 */
public static String receive(HttpServletRequest request) {
StringBuffer sb = new StringBuffer();
BufferedReader br = null;
try {
br = new BufferedReader(new InputStreamReader(new GZIPInputStream(request.getInputStream()), "GBK"));
String str = null;
while ((str = br.readLine()) != null) {
sb.append(str);
}
br.close();

} catch (Exception e) {
e.printStackTrace();
} finally {
try {
if (br!=null) br.close();
} catch (IOException e) {
e.printStackTrace();
}
}
return sb.toString();
}

/**
 * 响应HTTP数据
 * @param responseText
 * @param response
 */
public static void response(String responseText, HttpServletResponse response) {
BufferedWriter bw = null;
try {
response.setHeader("Content-Encoding", "gzip");
bw = new BufferedWriter(new OutputStreamWriter(new GZIPOutputStream(response.getOutputStream()), "GBK"));
bw.write(responseText);
bw.flush();
bw.close();

} catch (Exception e) {
e.printStackTrace();
} finally {
try {
if (bw!=null) bw.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}这两个是我写的工具类,各位好心可以试一下,Android建个按钮就行,服务端建个Servlet就行。就这么点分了,感谢各位!!!