Skip to main content

Android — How to programmatically log into website from a form



The app I am writing involves taking details from the user and using them to access their account on a website. I know how to take details from the user but I don't know how to use those details to log into the website. Does anyone know how I can input these details in the correct boxes? Thanks in advance




Comments

  1. You should use a Webview to display to webpage.
    Check out the official example from Google:
    http://developer.android.com/resources/tutorials/views/hello-webview.html

    To fill the correct fields, check this answer:
    Fill fields in webview automatically

    ReplyDelete
  2. First of all, you should check out if the website has the API.

    If they don't have the API,


    In Firebug (in Firefox) or Developer Tools (in Chrome), goto Network Tab and see what POST is done.
    Now that you know what is POSTed & to what URL, you have to do that using Java.
    While doing the HTTP POST/GET requests in Java, you will also need to handle cookies (which your browser does automagically for you). For that you need something called a CookieJar. You can use that without using a cookiejar too as explained here but it's cumbersome.


    So, read a tutorial here & get started.

    ReplyDelete
  3. If the website is using POST, which is the most likely case, you can simply use UrlEncodedFormEntity and HttpClient to do that

    HttpParams params = new BasicHttpParams();
    HttpClient client = new DefaultHttpClient(params);
    HttpPost post = new HttpPost("www.thewebsiteyouwanttosubmitto.com/post.php");
    post.setEntity(new UrlEncodedFormEntity());
    client.execute(post, new ResponseHandler(){});

    ReplyDelete

Post a Comment

Popular posts from this blog

Why is this Javascript much *slower* than its jQuery equivalent?

I have a HTML list of about 500 items and a "filter" box above it. I started by using jQuery to filter the list when I typed a letter (timing code added later): $('#filter').keyup( function() { var jqStart = (new Date).getTime(); var search = $(this).val().toLowerCase(); var $list = $('ul.ablist > li'); $list.each( function() { if ( $(this).text().toLowerCase().indexOf(search) === -1 ) $(this).hide(); else $(this).show(); } ); console.log('Time: ' + ((new Date).getTime() - jqStart)); } ); However, there was a couple of seconds delay after typing each letter (particularly the first letter). So I thought it may be slightly quicker if I used plain Javascript (I read recently that jQuery's each function is particularly slow). Here's my JS equivalent: document.getElementById('filter').addEventListener( 'keyup', function () { var jsStart = (new Date).getTime()...