1、不可以在UI线程直接读取网络数据,所以另起线程处理这件事情
public class MainActivity extends ActionBarActivity implements IParseJsonCallback,IParseHtmlCallback{
public void ParseHtmlPage(List<PhaseResultBean> resultList) {
new ParseHtml(this).execute(resultList);
}
@Override
public void ParseHtmlDone(List<PhaseResultBean> resultList) {
//回调函数
}
}
2、回调接口
package com.neohope.android.gpjj;
import java.util.List;
public interface IParseHtmlCallback {
void ParseHtmlDone(List<PhaseResultBean> resultList);
}
3、解析HTML类
package com.neohope.android.gpjj;
import android.os.AsyncTask;
import android.util.Log;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;
import java.io.IOException;
import java.util.List;
public class ParseHtml extends AsyncTask<List<PhaseResultBean>,Void,List<PhaseResultBean>>{
private IParseHtmlCallback htmlCallback;
public ParseHtml(IParseHtmlCallback htmlCallback)
{
this.htmlCallback = htmlCallback;
}
@Override
protected List<PhaseResultBean> doInBackground(List<PhaseResultBean>... paramList) {
if(paramList==null)return null;
List<PhaseResultBean> params = paramList[0];
for(PhaseResultBean bean : params) {
Document doc = null;
String url = bean.httpUrl;
try {
doc = Jsoup.connect(url).userAgent("Mozilla/5.0 (Windows; U; WindowsNT 5.1; en-US; rv1.8.1.6) Gecko/20070725 Firefox/2.0.0.6").timeout(5000).followRedirects(true).get();
} catch (IOException ex) {
Log.w("", ex.getMessage());
return null;
}
Document content = Jsoup.parse(doc.toString());
Element dodydiv = content.getElementById("bodydiv");
Element div = dodydiv.child(6).child(1).child(0).child(0);
Element code = div.child(0).child(2);
String szCode = code.text();
Element title = div.child(0).child(1);
String szTitle = title.text();
bean.code = szCode;
bean.name = szTitle;
}
return params;
}
@Override
protected void onPostExecute(List<PhaseResultBean> listResult) {
super.onPostExecute(listResult);
htmlCallback.ParseHtmlDone(listResult);
}
@Override
protected void onPreExecute() {
super.onPreExecute();
}
}