腾讯微博开放平台API相关经验--部署到服务器返回值为乱码问题

来源:互联网 发布:js教学视频 编辑:程序博客网 时间:2024/04/30 13:52

腾讯微博开放平台API在eclipse里运行时返回中文值正常显示,如果将程序部署到Tomcat后,程序在返回中文后会出现乱码问题。解决方法如下:

找到QHttpClient.java类

 

public String httpGet(String url, String queryString) throws Exception {        StringBuilder responseData = new StringBuilder();        if (queryString != null && !queryString.equals("")) {            url += "?" + queryString;        }        log.info("QHttpClient httpGet [1] url = " + url);        HttpGet httpGet = new HttpGet(url);        httpGet.addHeader("Accept-Encoding", "gzip,deflate,sdch");        httpGet.getParams().setParameter("http.socket.timeout", conTimeOutMs);        HttpResponse response;        response = httpClient.execute(httpGet);        log.info("QHttpClient httpGet [2] StatusLine : " + response.getStatusLine());        try {            byte[] b=new byte[2048];            GZIPInputStream gzin = new GZIPInputStream(response.getEntity().getContent());            int length=0;            while((length=gzin.read(b))!=-1){                responseData.append(new String(b,0,length));            }            gzin.close();        } catch (Exception e) {            e.printStackTrace();        } finally {            httpGet.abort();        }        log.info("QHttpClient httpGet [3] Response = " + responseData.toString());        return responseData.toString();    }


 

修改为:
    public String httpGet(String url, String queryString) throws Exception {        StringBuilder responseData = new StringBuilder();        if (queryString != null && !queryString.equals("")) {            url += "?" + queryString;        }        log.info("QHttpClient httpGet [1] url = " + url);        HttpGet httpGet = new HttpGet(url);        httpGet.addHeader("Accept-Encoding", "gzip,deflate,sdch");        httpGet.getParams().setParameter("http.socket.timeout", conTimeOutMs);        HttpResponse response;        response = httpClient.execute(httpGet);        log.info("QHttpClient httpGet [2] StatusLine : " + response.getStatusLine());        try {            BufferedReader br = new  BufferedReader(new InputStreamReader(new GZIPInputStream(response.getEntity().getContent()),"utf-8"));            String s;            while ((s = br.readLine()) != null ) {                    responseData.append(s);            }            br.close();        } catch (Exception e) {            e.printStackTrace();        } finally {            httpGet.abort();        }        log.info("QHttpClient httpGet [3] Response = " + responseData.toString());        return responseData.toString();    }

替换完之后重新部署,重启Tomcat,你会发现乱码问题解决了!