前提:最近在做一个android小软件,想先自己写个简单的服务器进行测试,然后就出现下面的问题。
服务器部分代码(经测试在网页上可以显示封装后的数据)
try
{
ArrayList<Map<String,String>> list=new ArrayList<Map<String,String>>();
String sql="select name from Conn_List where department='"+part+"'";
conn=Sqlcon.getConnection();
stmt=conn.prepareStatement(sql);
rs=stmt.executeQuery();
while(rs.next())
{
Map<String,String> map=new HashMap<String,String>();
map.put("name", rs.getString("name"));
list.add(map);
}
JSONStringer stringer=new JSONStringer();
stringer.array();
for(Map<String,String> map:list)
{
stringer.object().key("name").value(map.get("name")).endObject();
}
stringer.endArray();
response.getOutputStream().write(stringer.toString().getBytes("UTF-8"));
response.setContentType("text/json; charset=UTF-8");
}
android客户端部分代码(解析过程,最终返回一个list,将list放入我自己写好的自定义继承adapter)
private ArrayList<Map<String,String>> GetJson() throws Exception
{
ArrayList<Map<String,String>> list=new ArrayList<Map<String,String>>();
URL url=new URL("http://192.168.1.109:8080/ServletServer/ListServlet");
HttpURLConnection conn=(HttpURLConnection)url.openConnection();
conn.setRequestMethod("GET");
if(conn.getResponseCode()==200)
{
InputStream in=conn.getInputStream();//获取数据
list=parseJSON(in);//解析数据
}
return list;
}
private ArrayList<Map<String,String>> parseJSON(InputStream in) throws Exception
{
ArrayList<Map<String,String>> list=new ArrayList<Map<String,String>>();
Map<String,String> map=null;
String strResult=read(in);//转换为字符串数据
JSONArray array=new JSONArray(strResult);******************************报错处
for(int i=0;i<array.length();i++)
{
JSONObject object=array.getJSONObject(i);
map=new HashMap<String,String>();
map.put("name", object.getString("name"));
list.add(map);
}
return list;
}
private String read(InputStream in) throws Exception
{
ByteArrayOutputStream bout=new ByteArrayOutputStream();
byte[] buf=new byte[4096];
int len=-1;
while((len=in.read(buf,0,4096))!=-1)
{
bout.write(buf,0,len);
}
buf=null;
return new String(bout.toByteArray(),"UTF-8");
}
报错部分先是一段黄色报错,内容是End of input at character 0 of,位置就是上面提到的报错处。
接下去是一段红色报错,内容是在我的自定义继承adapter里面的getCount()有空指针,而getCount()里面的内容是return list.size();。androidjsonservlet交互服务器
服务器部分代码(经测试在网页上可以显示封装后的数据)
try
{
ArrayList<Map<String,String>> list=new ArrayList<Map<String,String>>();
String sql="select name from Conn_List where department='"+part+"'";
conn=Sqlcon.getConnection();
stmt=conn.prepareStatement(sql);
rs=stmt.executeQuery();
while(rs.next())
{
Map<String,String> map=new HashMap<String,String>();
map.put("name", rs.getString("name"));
list.add(map);
}
JSONStringer stringer=new JSONStringer();
stringer.array();
for(Map<String,String> map:list)
{
stringer.object().key("name").value(map.get("name")).endObject();
}
stringer.endArray();
response.getOutputStream().write(stringer.toString().getBytes("UTF-8"));
response.setContentType("text/json; charset=UTF-8");
}
android客户端部分代码(解析过程,最终返回一个list,将list放入我自己写好的自定义继承adapter)
private ArrayList<Map<String,String>> GetJson() throws Exception
{
ArrayList<Map<String,String>> list=new ArrayList<Map<String,String>>();
URL url=new URL("http://192.168.1.109:8080/ServletServer/ListServlet");
HttpURLConnection conn=(HttpURLConnection)url.openConnection();
conn.setRequestMethod("GET");
if(conn.getResponseCode()==200)
{
InputStream in=conn.getInputStream();//获取数据
list=parseJSON(in);//解析数据
}
return list;
}
private ArrayList<Map<String,String>> parseJSON(InputStream in) throws Exception
{
ArrayList<Map<String,String>> list=new ArrayList<Map<String,String>>();
Map<String,String> map=null;
String strResult=read(in);//转换为字符串数据
JSONArray array=new JSONArray(strResult);******************************报错处
for(int i=0;i<array.length();i++)
{
JSONObject object=array.getJSONObject(i);
map=new HashMap<String,String>();
map.put("name", object.getString("name"));
list.add(map);
}
return list;
}
private String read(InputStream in) throws Exception
{
ByteArrayOutputStream bout=new ByteArrayOutputStream();
byte[] buf=new byte[4096];
int len=-1;
while((len=in.read(buf,0,4096))!=-1)
{
bout.write(buf,0,len);
}
buf=null;
return new String(bout.toByteArray(),"UTF-8");
}
报错部分先是一段黄色报错,内容是End of input at character 0 of,位置就是上面提到的报错处。
接下去是一段红色报错,内容是在我的自定义继承adapter里面的getCount()有空指针,而getCount()里面的内容是return list.size();。androidjsonservlet交互服务器
解决方案 »
- 求如何获取手机SD卡上的xml用dom4j来解析
- Android Sensor中Gyroscope显示的旋转读书不对
- 如何在ANDROID SDK中调用ANDROID本身的浏览器测试HTML网页?比较着急,希望大家帮忙,谢谢!
- XStream StaxDriver()和JDomDriver()
- (求助)ViewPager如何实现CoverFlow效果
- 【新手求助】关于AdapterView的几个小问题。
- HttpGet请求--返回结果有问题?
- 怎么实现可左右滑动的GridView,并且下面还有小圆点的,就类似手机程序桌面的那种。跪求帮助!
- as一打开就这样 怎么办呀
- 请问各位大神litepal这是出了什么问题吗
- ksoap2 调用 .net webservice 问题【高分】
- 求助啊。。。快奔溃了被一个问题卡了一整天
最好转化成base64编码格式能避免这种编码上的问题。
我用过的觉得还是base64最稳定最可靠。