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

Wildcards in a hosts file

I want to setup my local development machine so that any requests for *.local are redirected to localhost . The idea is that as I develop multiple sites, I can just add vhosts to Apache called site1.local , site2.local etc, and have them all resolve to localhost , while Apache serves a different site accordingly.