클 라 이언 트 HttpClient 처리 Servlet Gzip
10740 단어 httpclient
서버
public class GzipTestServlet extends HttpServlet {
protected void processRequest(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setHeader("Cache-Control", "no-cache");
response.setContentType("text/html;charset=UTF-8");
String str = " this is a test!";
if (isGzipSupport(request)) {// gzip
response.setHeader("Content-Encoding", "gzip");
OutputStream os = response.getOutputStream();
GZIPOutputStream gs = new GZIPOutputStream(os);
gs.write(str.getBytes("UTF-8"));//
gs.finish();
gs.close();
os.close();
} else {
PrintWriter out = response.getWriter();
out.write(str);
out.flush();
out.close();
}
}
/**
* gzip
* @param request
* @return
*/
private boolean isGzipSupport(HttpServletRequest request) {
String headEncoding = request.getHeader("accept-encoding");
return (headEncoding != null && (headEncoding.indexOf("gzip") != -1));
}
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
processRequest(request, response);
}
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
processRequest(request, response);
}
}
클 라 이언 트
Http Client 3.1 을 사용 합 니 다.
(1)UngzipPostMethod.java
/**
* PostMethod getResponseBodyAsString Gzip */
public class UngzipPostMethod extends org.apache.commons.httpclient.methods.PostMethod{
public UngzipPostMethod(String uri){
super(uri);
}
@Override
public String getResponseBodyAsString() throws IOException {
GZIPInputStream gzin;
if(getResponseBody()!=null ||getResponseStream() != null ){
if(getResponseHeader("Content-Encoding") != null && getResponseHeader("Content-Encoding").getValue().toLowerCase().indexOf("gzip") != -1) {
InputStream is = getResponseBodyAsStream();
gzin = new GZIPInputStream(is);
InputStreamReader isr = new InputStreamReader(gzin,getResponseCharSet());
BufferedReader br = new BufferedReader(isr);
StringBuilder sb = new StringBuilder();
String tmp;
while((tmp = br.readLine())!=null){
sb.append(tmp);
sb.append("\r
");
}
br.close();
isr.close();
return sb.toString();
}else{
//
return super.getResponseBodyAsString();
}
}else{
return null;
}
}
}
(2)HttpUtil.java
public class HttpUtil {
/**
*
* @param url
* @param list
* @return
*/
public String postGzipRequest(String url, List<NameValuePair> list){
HttpClient client = new HttpClient();
UngzipPostMethod post = new UngzipPostMethod(url);
post.setRequestHeader("Accept-Encoding", "gzip, deflate");
post.getParams().setParameter(HttpMethodParams.HTTP_CONTENT_CHARSET, "UTF-8");
StringBuilder sb = new StringBuilder();
if(list!=null){
int len = list.size();
NameValuePair[] params = new NameValuePair[len];
for(int i=0; i<len; i++){
params[i] = list.get(i);
}
post.setRequestBody(params);
}
try {
// post
int statusCode = client.executeMethod(post);
if (statusCode == HttpStatus.SC_OK) {
sb.append(post.getResponseBodyAsString());
}
} catch (IOException ex) {
java.util.logging.Logger.getLogger(HttpUtil.class.getName()).log(Level.SEVERE, null, ex);
}
return sb.toString();
}
}
(3)Test.java
public class Test {
public static void main(String args[]){
HttpUtil httpUtil = new HttpUtil();
String url = "http://localhost:8080/tsmanager/GzipTestServlet.do";
System.out.println(" :"+httpUtil.postGzipRequest(url, null));
}
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
HttpClient 'GET' - 각도 단순화이봐, 친구들. 오늘 저는 API를 호출하는 Angular의 방법을 분석하고 싶습니다. 각 CRUD 작업에 대한 기사를 작성할 예정이므로 눈을 떼지 말고 팔로우하십시오! 이것이 기본이며 Angular 웹 사이트에서 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.