从网站的URL加载内容(图像,标题等)

时间:2017-11-10 17:28:16

标签: android json android-webview

假设我有一个像this这样的网址。现在我试图在我的应用程序上一目了然地显示URL的内容。如下图所示:enter image description here

然后我应该采取什么方式。请帮帮我。

1 个答案:

答案 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

最后,您的结果将如下所示:enter image description here