package com.devtf_l.app.net; import java.io.ByteArrayInputStream; import org.jsoup.Jsoup; import org.jsoup.nodes.Document; import com.android.volley.NetworkResponse; import com.android.volley.ParseError; import com.android.volley.Request; import com.android.volley.Response; import com.android.volley.Response.ErrorListener; import com.android.volley.Response.Listener; import com.android.volley.toolbox.HttpHeaderParser; /** * @Desc: 自定义 Request 将html请求结果用 Jsoup 转为 Document 返,回调中按需解析Document * @author ljh * @date 2015-5-6 下午6:11:35 */ public class HtmlDocumentRequest extends Request<Document> { private final Listener<Document> mListener; public HtmlDocumentRequest(int method, String url, Listener<Document> listener, ErrorListener errorListener) { super(method, url, errorListener); mListener = listener; } public HtmlDocumentRequest(String url, Listener<Document> listener, ErrorListener errorListener) { this(Method.GET, url, listener, errorListener); } @Override protected Response<Document> parseNetworkResponse(NetworkResponse response) { try { Document doc = Jsoup.parse(new ByteArrayInputStream(response.data), "UTF-8", WebAPI.BASE_URL); return Response.success(doc, HttpHeaderParser.parseCacheHeaders(response)); } catch (Exception e) { return Response.error(new ParseError(e)); } } @Override protected void deliverResponse(Document response) { mListener.onResponse(response); } }