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<Novel> 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<Novel> getHotNovelList() {
List<Novel> novelList = new ArrayList<Novel>();
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;
}