java - How to properly perform HttpPost on onPageFinished in Android -
in app have webview. if webview loads, want perform httppost fetch variable script. keep getting exception errors, tell me need perform httppost in asynctask. don't know how this, since i'm enough in android developing yet.
this httppost wrote:
httpclient httpclient = new defaulthttpclient(); httppost httppost = new; httppost("myscript.php"); try { // add data list<namevaluepair> namevaluepairs = new arraylist<namevaluepair>(2); namevaluepairs.add(new basicnamevaluepair("website", "google.com")); httppost.setentity(new urlencodedformentity(namevaluepairs)); // execute http post request httpresponse response = httpclient.execute(httppost); // writing response log log.d("http response:", response.tostring()); } catch (clientprotocolexception e) { // todo auto-generated catch block } catch (ioexception e) { // todo auto-generated catch block } this onpagefinished method:
mywebview.setwebviewclient(new webviewclient() { @override public void onpagefinished(webview mywebview, string url) { mywebview.loadurl("javascript:(function() { " + "var tetsttest = document.getelementbyid('menu-toggle'); tetsttest.style.display = 'none'; tetsttest.style.display = 'none'; tetsttest.style.display = 'none';" + "})()"); // when page has finished loading dismiss progress dialog if (progressdialog != null && progressdialog.isshowing()) { progressdialog.dismiss(); } } }); and php file:
<?php $website = $_post['website']; $conn = mysql_connect("localhost", "username", "password") or die("err"); $db = mysql_select_db('database') or die("err"); $sql = "select color colors website='$website'"; $result = mysql_query($sql) or die(mysql_error()); $row = mysql_fetch_array($result); $color = $row['color']; print "$color"; ?>
well network operations in android requires performed in separate thread , asynctask class allows perform threading in elegant manner(painless threading). heres example of asynctask:
public class sendrequestasynctask extends asynctask<void, void, void> { @override protected void onpreexecute() { // todo auto-generated method stub super.onpreexecute(); //runs in ui thread } @override protected void doinbackground(void... params) { // todo auto-generated method stub //perform network operations here background thread return null; } @override protected void onpostexecute(void result) { // todo auto-generated method stub super.onpostexecute(result); //runs in ui thread can update layout here } } on onpageloading finished method can call asynctask this:
new sendrequestasynctask().execute();
Comments
Post a Comment