I have a WebView where I'm trying to get the post response back as a string. I have successfully implemented this in Swift/iOS, but I fail to do this in Jave/Android.
In Swift/iOS I use shouldStartLoadWithRequest. Where I can get request.HTTPBody.
Grabbing POST data from UIWebView
Here is my code: But when I implement this I can't navigate in my WebView.
aWebView = (WebView) findViewById(R.id.webView);
// Enable Javascript
WebSettings webSettings = aWebView.getSettings();
webSettings.setJavaScriptEnabled(true);
// Stop local links and redirects from opening in browser instead of WebView
aWebView.setWebViewClient(new WebViewClient(){
@Override
public void onPageStarted(WebView view, String url, Bitmap favicon) {
//SHOW LOADING IF IT ISNT ALREADY VISIBLE
Log.d(LOGTAG, url);
}
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
if(flag)
{
GetUserLoginTask GetUserLogin = new GetUserLoginTask(url);
GetUserLogin.execute();
return true;
}
return false;
}
@Override
public void onPageFinished (WebView view, String url) {
flag = true;
}
});
aWebView.loadUrl(mainUrl);
Then I use and asynctask for network communication:
public class GetUserLoginTask extends AsyncTask<Void, Void, String> {
private final String mURL;
GetUserLoginTask(String url) {
mURL = url;
}
@Override
protected String doInBackground(Void... params) {
try {
URL aURL = new URL(mURL);
URLConnection conn = aURL.openConnection();
conn.connect();
InputStream is = conn.getInputStream();
BufferedReader in = new BufferedReader(new InputStreamReader(is));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
response.append(inputLine);
}
in.close();
String s = response.toString();
Log.d(LOGTAG, s);
return s;
} catch (MalformedURLException e) {
e.printStackTrace();
return "";
} catch (IOException e) {
e.printStackTrace();
return "";
}
}
@Override
protected void onPostExecute(String g) {
Log.d("elaegen", g);
}
}