假设我有一个像this这样的网址。现在我试图在我的应用程序上一目了然地显示URL的内容。如下图所示:
然后我应该采取什么方式。请帮帮我。
答案 0 :(得分:0)
您需要从网址下载内容。然后,您必须从加载的页面源解析所需的值。
所以,步骤基本上是: 1.从Web URL加载Html 2.从html中解析你的值
现在是从网址加载html的步骤。
static String TAG = "WebRequest";
void getWebAsync(String urlString) {
AsyncHttpClient androidClient = new AsyncHttpClient();
androidClient.get(urlString, new TextHttpResponseHandler() {
@Override
public void onFailure(int statusCode, Header[] headers, String responseString, Throwable throwable) {
Log.e(TAG, "responseString: " + responseString);
}
@Override
public void onSuccess(int statusCode, Header[] headers, String responseToken) {
Log.e(TAG, "Client token: " + responseToken);
handleHtml(responseToken);
}
});
}
然后你必须处理收到的html源代码。
void handleHtml(String htmlCode) {
WebModel webModel = extractAllText(htmlCode);
Log.e("PARSED_MODEL", "Model: " + webModel.toString());
if (webModel.getTilte() != null) {
titleTV.setText(webModel.getTilte());
}
if (webModel.getMainIamgeURL() != null) {
Picasso.with(this)
.load(webModel.getMainIamgeURL())
.error(R.mipmap.ic_launcher)
.into(imageView);
} else {
imageView.setImageResource(R.mipmap.ic_launcher);
}
}
public WebModel extractAllText(String htmlText){
Source source = new Source(htmlText);
String strData = "";
WebModel webModel = new WebModel();
List<Element> elements;
elements = source.getAllElements("title");
String title = elements.get(0).getContent().toString();
webModel.setTilte(title);
elements = source.getAllElements("meta");
for(Element element : elements )
{
final String id = element.getAttributeValue("property"); // Get Attribute 'id'
if( id != null && id.equals("og:image")){
strData = element.getAttributeValue("content");
webModel.setMainIamgeURL(strData);
break;
}
}
return webModel;
}
public class WebModel {
String tilte;
String mainIamgeURL;
public String getTilte() {
return tilte;
}
public String getMainIamgeURL() {
return mainIamgeURL;
}
public void setTilte(String tilte) {
this.tilte = tilte;
}
public void setMainIamgeURL(String mainIamgeURL) {
this.mainIamgeURL = mainIamgeURL;
}
}
这里使用了两个库: 1. jericho-html-3.4.jar 2. com.loopj.android:android-async-http:1.4.9