服务器返回的json显示android,android客户端访问服务端,服务端返回json数据

json这里选用了fast-json

先看服务端代码如下

package novelserver.servlet;

import java.io.IOException;

import java.io.PrintWriter;

import java.util.List;

import javax.servlet.ServletException;

import javax.servlet.annotation.WebServlet;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import model.Novel;

import spider.BiqugeNovelPageProcesser;

import spider.BiqugeNovelPipeline;

import spider.NovelList;

import us.codecraft.webmagic.Spider;

import com.alibaba.fastjson.JSON;

/**

* 首页推荐

* @author liangzhenghui

*

*/

@WebServlet(urlPatterns={"/homeRecommend"})

public class HomeRecommend extends HttpServlet {

private static final long serialVersionUID = 430306605309121990L;

@Override

protected void doGet(HttpServletRequest req, HttpServletResponse resp)

throws ServletException, IOException {

doPost(req, resp);

}

@Override

protected void doPost(HttpServletRequest req, HttpServletResponse resp)

throws ServletException, IOException {

//笔趣阁

String url = "http://www.biquge.com/";

Spider.create(new BiqugeNovelPageProcesser()).addUrl(url).addPipeline(new BiqugeNovelPipeline()).run();

List novelList = NovelList.getNovelList();

//解决中文乱码问题

resp.setContentType("text/html;charset=UTF-8");  //目的是为了控制浏览器的行为,即控制浏览器用UTF-8进行解码;

//的目的是用于response.getWriter()输出的字符流的乱码问题,如果是response.getOutputStream()是不需要此种解决方案的;因为这句话的意思是为了将response对象中的数据以UTF-8编码后发向浏览器;

resp.setCharacterEncoding("UTF-8");

PrintWriter out = resp.getWriter();

out.write(JSON.toJSONString(novelList));

}

}

android客户端向服务端发起请求以及接收返回数据代码如下

public static List getHotNovelList() {

List novelList = new ArrayList();

String url = "http://192.168.1.104:8080/novel/homeRecommend";

DefaultHttpClient httpclient = new DefaultHttpClient();

HttpGet httpGet = new HttpGet(url);

try {

HttpResponse response = httpclient.execute(httpGet);

novelList = JSON.parseArray(

EntityUtils.toString(response.getEntity()), Novel.class);

} catch (ClientProtocolException e) {

e.printStackTrace();

} catch (IOException e) {

e.printStackTrace();

}

return novelList;

}