0
所以這可能看起來像一個非常簡單的問題,但我沒有找到任何運氣,因爲它也是特定的。試圖從android中獲取html源代碼(動態更改)從URL(不會更改)?
我有一個網站,我用WebView
,我叫西弗吉尼亞州,通過wv.load(URL)
加載它在網站上,有PHP的形式,當用戶與它交互系統將生成HTML表格(點擊提交)。
由於生成的HTML表格,也爲其生成HTML表的源代碼,但該網址保持不變。新生成的具有html表格的源代碼是我想要抓取的那個。
請參閱下面我的代碼:
private final String URL = "http://google.com";
private WebView wv;
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
wv = (WebView) findViewById(R.id.wvPage);
wv.getSettings().setJavaScriptEnabled(true);
wv.loadUrl(URL);
wv.setWebViewClient(new WebViewClient()
{
@Override
public void onPageFinished(WebView view, String url)
{
//view.loadUrl(URL);
new AsyncClass().execute(url);
Log.i("ASDF", "pagefinished");
}
});
}
我所謂的執行功能,每次的形式完成加載。即使生成表,我仍然沒有得到新生成的表的源代碼。下面是我的AsynTask實現:我只是從另一篇文章中複製它。
@Override
protected Void doInBackground(String... URL)
{
try
{
HttpClient httpclient = new DefaultHttpClient(); // Create HTTP Client
HttpGet httpget = new HttpGet(URL[0]); // Set the action you want to do
HttpResponse response = httpclient.execute(httpget); // Execute it
HttpEntity entity = response.getEntity();
InputStream is = entity.getContent(); // Create an InputStream with the response
BufferedReader reader = new BufferedReader(new InputStreamReader(is, "iso-8859-1"), 8);
StringBuilder sb = new StringBuilder();
String line = null;
while ((line = reader.readLine()) != null)
{
sb.append(line + "\n");
Log.i("Source Code:", line);
}
String resString = sb.toString(); // Result is here
is.close();
}
catch (Exception ex){
ex.printStackTrace();
Log.i("ERROR", ex.toString());
}
return null;
}
我想要做的就是獲取html表的新源代碼,所以我可以繼續解析它。任何幫助表示讚賞。
生成html表是因爲參數是通過POST或GET操作發送到該URL。你正在執行一個沒有參數的URL。 – greenapps
感謝您的回覆,但我的問題似乎爲時過早。幾分鐘前我剛剛找到了解決方案。 – Vibol
是的。好。但是,該解決方案不會再根據您的主題狀態從網址中獲取源代碼。但從webview。 – greenapps