解析网络数据时,String与InputStream互转的几种方法
2015-11-27 10:27
549 查看
httpurlconnection返回的是inputStream,转成字符串才能解析,以下是转字符串的方法:
inputStream和outputStream的区别:
前者提供读取方法,后者提供写入方法
/**
* 利用BufferedReader实现Inputstream转换成String <功能详细描述>
*
* @param in
* @return String
*/
public static String Inputstr2Str_Reader(InputStream in, String encode)
{
String str = "";
try
{
if (encode == null || encode.equals(""))
{
// 默认以utf-8形式
encode = "utf-8";
}
BufferedReader reader = new BufferedReader(new InputStreamReader(in, encode));
StringBuffer sb = new StringBuffer();
while ((str = reader.readLine()) != null)
{
sb.append(str).append("\n");
}
return sb.toString();
}
catch (UnsupportedEncodingException e1)
{
e1.printStackTrace();
}
catch (IOException e)
{
e.printStackTrace();
}
return str;
}
/**
* 利用byte数组转换InputStream------->String <功能详细描述>
*
* @param in
* @return
* @see [类、类#方法、类#成员]
*/
public static String Inputstr2Str_byteArr(InputStream in, String encode)
{
StringBuffer sb = new StringBuffer();
byte[] b = new byte[1024];
int len = 0;
try
{
if (encode == null || encode.equals(""))
{
// 默认以utf-8形式
encode = "utf-8";
}
while ((len = in.read(b)) != -1)
{
sb.append(new String(b, 0, len, encode));
}
return sb.toString();
}
catch (IOException e)
{
e.printStackTrace();
}
return "";
}
/**
* 利用ByteArrayOutputStream:Inputstream------------>String <功能详细描述>
*
* @param in
* @return
* @see [类、类#方法、类#成员]
*/
public static String Inputstr2Str_ByteArrayOutputStream(InputStream in,String encode)
{
ByteArrayOutputStream out = new ByteArrayOutputStream();
byte[] b = new byte[1024];
int len = 0;
try
{
if (encode == null || encode.equals(""))
{
// 默认以utf-8形式
encode = "utf-8";
}
while ((len = in.read(b)) > 0)
{
out.write(b, 0, len);
}
return out.toString(encode);
}
catch (IOException e)
{
e.printStackTrace();
}
return "";
}
/**
* 利用ByteArrayInputStream:String------------------>InputStream <功能详细描述>
*
* @param inStr
* @return
* @see [类、类#方法、类#成员]
*/
public static InputStream Str2Inputstr(String inStr)
{
try
{
// return new ByteArrayInputStream(inStr.getBytes());
// return new ByteArrayInputStream(inStr.getBytes("UTF-8"));
return new StringBufferInputStream(inStr);
}
catch (Exception e)
{
e.printStackTrace();
}
return null;
}
inputStream和outputStream的区别:
前者提供读取方法,后者提供写入方法
/**
* 利用BufferedReader实现Inputstream转换成String <功能详细描述>
*
* @param in
* @return String
*/
public static String Inputstr2Str_Reader(InputStream in, String encode)
{
String str = "";
try
{
if (encode == null || encode.equals(""))
{
// 默认以utf-8形式
encode = "utf-8";
}
BufferedReader reader = new BufferedReader(new InputStreamReader(in, encode));
StringBuffer sb = new StringBuffer();
while ((str = reader.readLine()) != null)
{
sb.append(str).append("\n");
}
return sb.toString();
}
catch (UnsupportedEncodingException e1)
{
e1.printStackTrace();
}
catch (IOException e)
{
e.printStackTrace();
}
return str;
}
/**
* 利用byte数组转换InputStream------->String <功能详细描述>
*
* @param in
* @return
* @see [类、类#方法、类#成员]
*/
public static String Inputstr2Str_byteArr(InputStream in, String encode)
{
StringBuffer sb = new StringBuffer();
byte[] b = new byte[1024];
int len = 0;
try
{
if (encode == null || encode.equals(""))
{
// 默认以utf-8形式
encode = "utf-8";
}
while ((len = in.read(b)) != -1)
{
sb.append(new String(b, 0, len, encode));
}
return sb.toString();
}
catch (IOException e)
{
e.printStackTrace();
}
return "";
}
/**
* 利用ByteArrayOutputStream:Inputstream------------>String <功能详细描述>
*
* @param in
* @return
* @see [类、类#方法、类#成员]
*/
public static String Inputstr2Str_ByteArrayOutputStream(InputStream in,String encode)
{
ByteArrayOutputStream out = new ByteArrayOutputStream();
byte[] b = new byte[1024];
int len = 0;
try
{
if (encode == null || encode.equals(""))
{
// 默认以utf-8形式
encode = "utf-8";
}
while ((len = in.read(b)) > 0)
{
out.write(b, 0, len);
}
return out.toString(encode);
}
catch (IOException e)
{
e.printStackTrace();
}
return "";
}
/**
* 利用ByteArrayInputStream:String------------------>InputStream <功能详细描述>
*
* @param inStr
* @return
* @see [类、类#方法、类#成员]
*/
public static InputStream Str2Inputstr(String inStr)
{
try
{
// return new ByteArrayInputStream(inStr.getBytes());
// return new ByteArrayInputStream(inStr.getBytes("UTF-8"));
return new StringBufferInputStream(inStr);
}
catch (Exception e)
{
e.printStackTrace();
}
return null;
}
相关文章推荐
- iOS9中关于http地址请求出错问题
- 如何去掉手机显示电池,时间和网络,即最上面那一行
- TCP/IP、Http、Socket的区别文章
- android中涉及wi-fi管理,internetManager网络管理,connectivityManager连接管理,PowerManager电源管理,vibrator震动管理等参数问题
- UNIX网络编程——读写锁
- iOS9不能正常使用HTTP的解决方法
- 面试小结二附: TCP/IP协议 三次握手与四次挥手
- 神经网络学习 之 M-P模型
- 常见的http返回码
- Node 一个简单的HttpServer+Mysql的后台
- java基础之网络编程泛型及API
- Akka实战:构建REST风格的微服务
- HTTP,FTP,TCP,UDP及SOCKET
- JAVA基础之网络编程
- jmeter压力测试(简单的http请求)-实例
- DICOM:DICOM3.0网络通信协议之“开源库实现剖析”
- 结构体定义 typedef struct 用法详解和用法小结 http://blog.sina.com.cn/s/blog_4fdabc820100fsxu.html
- Reachability实时网络监听/AFNETWorking2.0+ 网络监听
- 解决Thinkpad开启飞行模式无法连接无线网络
- HttpClient之GET请求