WebView を使用して、情報を取得したいサイトの HTML を取得しましたが、Web サイトにアクセスできません (サーバー側、クライアント側のみ)。
javascriptを介してhtmlをプルできます。しかし、コードを実行すると、Javascript が完了する前にデータ フィールドが読み込まれるため、データ フィールドが更新されません。後でJSOUP経由でデータを処理したい。HTTPCLient は LOGIN を使用する Web サイトであり、SSL で保護されているため、アクセスが困難です。WebView(手動ログイン)経由でアクセスし、その後データを取得できます。
ログインを取得または通過する方法、またはすべての html データがロードされるまで 2 番目のスレッドで待機する方法はありますか?
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;
}
}
}