找了一个网络上的来使用
结果出现某个位置上的字符的UTF-8的中文乱码问题
关键之处是在IO的时候指定编码,而不是在读取的时候指定
/**
* 获取网络的响应,判断并返回
* @param urlStr
* @return String
*/
public String getFetionMsgWML(String urlStr) {
String urlContent = null;
// InputStream in = null;
// OutputStream out = null;
HttpURLConnection httpUrlCon = null;
BufferedReader in = null;
StringBuffer sb = new StringBuffer("");
try {
URL url = new URL(urlStr);
httpUrlCon = (HttpURLConnection)url.openConnection();//建立连接
// httpUrlCon.setDoInput(true);
// httpUrlCon.setDoOutput(true);
httpUrlCon.setRequestMethod("GET");
//httpUrlCon.setRequestProperty("Charset", "UTF-8");
//1.使用HttpURLConnection要记得释放IO资源,尤其是当调用getContentLength()方法获得文件长度,
// 这时其实已经隐含的打开了io需要我们手动的再获得一次inputstream,然后在关闭这个inputstream。
//2.使用HttpURLConnection时要注意设置超时,有两个设置方法setConnectTimeout()和setReadTimeout()这两个一定要设置,
// 尤其是多次大量进行连接的时候更要设置这两个方法,否则容易造成程序在读某个连接的时候僵死在那,导致程序无法继续进行.
httpUrlCon.setConnectTimeout(30000);
httpUrlCon.setReadTimeout(30000);
int code=httpUrlCon.getResponseCode();
if(code!= HttpURLConnection.HTTP_OK){
System.out.println("***********wap 连接飞信消息盒子失败************** ");
System.out.println("*********** code: " + code);
System.out.println("*********** url: " + urlStr);
}
if(code == HttpURLConnection.HTTP_OK){
String inputLine = null;
in = new BufferedReader(new InputStreamReader(httpUrlCon.getInputStream(),"UTF-8"));//注意,此处UTF-8
while((inputLine = in.readLine()) != null) {
sb.append(inputLine);
}
}
} catch (Exception e) {
System.out.println("***********wap 连接飞信消息盒子失败 ************** ");
System.out.println("*********** url: " + urlStr);
e.printStackTrace();
} finally {
try {
if(null != in){
in.close();
}
} catch (Exception e) {
}
if (null != httpUrlCon){
httpUrlCon.disconnect();
}
}
urlContent = sb.toString();
//urlContent.replaceAll("&", "&");
return urlContent;
}