HttpURLConnection 接收網絡數據出現亂碼問題


由於接收的數據經過gZip處理過,所以在接受的時候也要處理,並且加上編碼格式(沒有會出現部分數據亂碼):

具體代碼實現如下:

URL ul = new URL(url);
HttpURLConnection conn = (HttpURLConnection) ul.openConnection();
conn.connect();
InputStream in = conn.getInputStream();

StringBuffer sb = new StringBuffer();
String readLine = new String();
GZIPInputStream gZipS=new GZIPInputStream(in);
InputStreamReader res = new InputStreamReader(gZipS,"UTF-8");
BufferedReader responseReader = new BufferedReader(res);
while ((readLine = responseReader.readLine()) != null) {
	sb.append(readLine);
}
responseReader.close();

 測試問題解決。。

有一點需要補充的是:在使用gZip解壓數據的時候,記得關閉gZip:

String result = "";
		GZIPInputStream gZipS = null;
		try {
			logger.debug("start getWeiboContent==url="+url);
			StringBuffer sb = new StringBuffer();
			String readLine = new String();
			URL ul = new URL(url);
			HttpURLConnection conn = (HttpURLConnection) ul.openConnection();
			conn.connect();
			in = conn.getInputStream();
			//解析八友數據
			gZipS=new GZIPInputStream(in);
			InputStreamReader res = new InputStreamReader(gZipS,"UTF-8");
			BufferedReader responseReader = new BufferedReader(res);
			while ((readLine = responseReader.readLine()) != null) {
				sb.append(readLine);
			}
			result = sb.toString();
			responseReader.close();
			res.close();
			gZipS.close();
			in.close();
			conn.disconnect();
			logger.debug("end getWeiboContent==url="+url);
			

		} catch (Exception e) {
			e.printStackTrace();
		}finally{
            if(gZipS!=null)
            {
                try {
                	gZipS.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }

 gZipS.close();尤其重要,而且在一個流沒有關閉的時候再次操作新的gZip會出現問題。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM