我使用 webview 为要从中提取信息但无法访问该网站(服务器端,仅客户端)的网站获取 HTML。
我可以通过 javascript 提取 html。但是当我运行我的代码时,我的数据字段没有更新,因为它在我的 Javascript 完成之前加载。之后我想通过 JSOUP 处理数据。进入 HTTPCLient 很困难,因为它是一个有 LOGIN 的网站,而且它是 SSL 安全的。我可以通过 WebView(手动登录)进入,然后再提取数据。
有没有办法获取或通过登录,或者在第二个线程中等待,直到它加载了所有的 html 数据?
public class MainActivity extends Activity implements OnClickListener {
TextView data;
Button getRost;
WebView webview;
String code;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
data = (TextView) findViewById(R.id.tvData);
getRost = (Button) findViewById(R.id.btGet);
getRost.setOnClickListener(this);
webview = (WebView) findViewById(R.id.wvWeb);
}
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
switch(arg0.getId())
{
case R.id.btGet:
webview.getSettings().setJavaScriptEnabled(true);
webview.addJavascriptInterface(new MyJavaScriptInterface(this), "HtmlViewer");
webview.setWebViewClient(new WebViewClient() {
@Override
public void onPageFinished(WebView view, String url) {
webview.loadUrl("javascript:window.HtmlViewer.showHTML" +
"('<head>'+document.getElementsByTagName('html')[0].innerHTML+'</head>');");
}
});
webview.loadUrl("URLTHATCONTAINTSINFO");
data.setText(code);
}
}
class MyJavaScriptInterface {
private Context ctx;
MyJavaScriptInterface(Context ctx) {
this.ctx = ctx;
}
public void showHTML(String html) {
new AlertDialog.Builder(ctx).setTitle("HTML").setMessage(html)
.setPositiveButton(android.R.string.ok, null).setCancelable(false).create().show();
code = html;
}
}
}