最近项目在使用 http://wthrcdn.etouch.cn/weather_mini
获取天气预报数据,但此接口只能用get方法请求,而且返回数据一直是乱码,原来返回数据用gzip格式压缩了,所以我的方
法中增加了判断是否为gzip并解压
public static String sendGet(String url, String param) { StringBuffer stringBuffer = new StringBuffer(); try { String urlNameString = url + "?" + param; URL realUrl = new URL(urlNameString); HttpURLConnection httpURLConnection = (HttpURLConnection) realUrl.openConnection(); //在这里设置一些属性,详细见UrlConnection文档,HttpURLConnection是UrlConnection的子类 //设置连接超时为5秒 httpURLConnection.setConnectTimeout(5000); //设定请求方式(默认为get) httpURLConnection.setRequestMethod("GET"); httpURLConnection.setRequestProperty("accept", "*/*"); httpURLConnection.setRequestProperty("Accept-Charset", "UTF-8"); httpURLConnection.setRequestProperty("contentType", "UTF-8"); httpURLConnection.setRequestProperty("Content-type", "application/x-www-form-urlencoded;charset=UTF-8"); //建立到远程对象的实际连接 httpURLConnection.connect(); GZIPInputStream gZIPInputStream = null; String encoding = httpURLConnection.getContentEncoding(); if(encoding.equals("gzip")){ gZIPInputStream = new GZIPInputStream(httpURLConnection.getInputStream()); BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(gZIPInputStream)); String line = null; while ((line = bufferedReader.readLine()) != null) { //转化为UTF-8的编码格式 line = new String(line.getBytes("UTF-8")); stringBuffer.append(line); } bufferedReader.close(); }else{ BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(httpURLConnection.getInputStream())); String line = null; while ((line = bufferedReader.readLine()) != null) { //转化为UTF-8的编码格式 line = new String(line.getBytes("UTF-8")); stringBuffer.append(line); } bufferedReader.close(); } //返回打开连接读取的输入流,输入流转化为StringBuffer类型,这一套流程要记住,常用 httpURLConnection.disconnect(); } catch (MalformedURLException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } return stringBuffer.toString(); }