Home | Contact Us | FAQ | Search & Site Map | Link to Us
Sign In | Join | Other 45 Sites in Network
HomeAnnouncementsWhite Papers
Discussion GroupsFirst AidDatabasesJavaBeansGUIJava 3DVirtual MachineCORBASecurityToolsGeneral
Java DirectoryOpen Source ProjectsSample Book ChaptersUser GroupsWeb Resources
Related Topics
Databases.NETMore Topics ...

Java Forum / General / July 2007

Tip: Looking for answers? Try searching our database.

How to login to a site using cookie? (not applet)

Thread view: 
anthony.mak@iname.com - 13 Jul 2007 01:34 GMT
Problem:
-Want to programmatically (a java program) login to a site, and
retrieve the next page.
-Site uses https and POST method.
-Site uses .aspx

Can anyone point me to some tutorials or codes that does this please?
I cannot find any coherent info, different sites say different things
and
I cannot get it work...

Please email to anthony.mak-AT-iname.com

Anthony
Andrew Thompson - 13 Jul 2007 02:57 GMT
>-Want to programmatically (a java program) login to a site, ...

What site?  URL?

>Please email to anthony.mak-AT-iname.com

Please pay me.

Signature

Andrew Thompson
http://www.athompson.info/andrew/

anthony.mak@iname.com - 13 Jul 2007 15:17 GMT
> anthony....@iname.com wrote:
> >-Want to programmatically (a java program) login to a site, ...
>
> What site?  URL?
https://www.commsec.com.au

I am trying to setup a HttpUrlConnection object using:
https://www.commsec.com.au/Default.aspx?LoginName=xxx&Password=yyy
and URLEncoder.encode() the part after "?"
Do I need to treat the password differently, since it is a password
input?

Anthony
Roedy Green - 13 Jul 2007 17:44 GMT
>I am trying to setup a HttpUrlConnection object using:
>https://www.commsec.com.au/Default.aspx?LoginName=xxx&Password=yyy
>and URLEncoder.encode() the part after "?"
>Do I need to treat the password differently, since it is a password
>input?

you never send a password in plaintext.  Authenticator does it all for
you.

http://mindprod.com/jgloss/authentication.html
--
Roedy Green Canadian Mind Products
The Java Glossary
http://mindprod.com
Andrew Thompson - 14 Jul 2007 04:38 GMT
>> anthony....@iname.com wrote:
>> >-Want to programmatically (a java program) login to a site, ...
>>
>> What site?  URL?

>https://www.commsec.com.au

Oh.. *Bastard* Bank!  You should have said..

Signature

Andrew Thompson
http://www.athompson.info/andrew/

anthony.mak@iname.com - 14 Jul 2007 14:56 GMT
> anthony....@iname.com wrote:
> >> anthony....@iname.com wrote:
[quoted text clipped - 7 lines]
> --
> Andrew Thompsonhttp://www.athompson.info/andrew/

What is the problem with logging into bank?
I am trying to write a program for my friend, who
is going to do phd research in economic, that gathers
stock data for analysis. Is it that much more difficult
to log into a bank programmatically than let's say Amazon?

Anthony Mak
Roedy Green - 13 Jul 2007 17:24 GMT
>Want to programmatically (a java program) login to a site,

see http://mindprod.com/jgloss/authenticator.html

You simply write code to provide id/password and Java magically does
the rest.
--
Roedy Green Canadian Mind Products
The Java Glossary
http://mindprod.com
anthony.mak@iname.com - 14 Jul 2007 02:32 GMT
On Jul 14, 2:24 am, Roedy Green <see_webs...@mindprod.com.invalid>
wrote:

> seehttp://mindprod.com/jgloss/authenticator.html
>
[quoted text clipped - 3 lines]
> Roedy Green Canadian Mind Products
> The Java Glossaryhttp://mindprod.com

Thanks Roedy.

What about Cookie? Firefox stores this cookie called "stn"
after I logged in, but if I delete this cookie and refresh,
I will be kicked back to the front login screen. So I think
it is the session id cookie. Don't I need to send back
a session id every time I POST?

Also, how does the Autheticator knows what are the <input>
names for the username and password? Shouldn't they be specified
somehow? (for this site, they are "LoginName" and "Password")

Below is my attempt using the Autheticator, but instead of
next_page being the string of the next page after a successful login,
it returned the front page of the site. So the method is not
successful. Do you have any idea what is wrong?

Many thanks!

Anthony

My Code
========
import java.net.*;
import java.io.*;

public class Test2 {

   private String login_url_str = "https://www.comsec.com.au/
Default.aspx";

   public Test2() {
   }

   public static void main(String[] args) {
       Test2 test1 = new Test2();
       test1.execute();
   }

   private void execute() {
       //Setup for https
       java.security.Security.addProvider(new
com.sun.net.ssl.internal.ssl.
                                  Provider());
       System.setProperty("java.protocol.handler.pkgs",
                  "com.sun.net.ssl.internal.www.protocol");

       Authenticator.setDefault( new MyAuthenticator() );

       try {
           URL url = new URL(login_url_str);
           //For handling POST request
           String next_page = getURLPostString(url,"");
           System.out.println(next_page);

       } catch (IOException ex) {
           System.out.println(ex);
           System.exit(1);
       }

   }

   /** Post a string to an URL and get the reply as a string. Returns
an empty
    string if things didn't work out. */
   //code from: http://martin.nobilitas.com/java/cookies.html
   private String getURLPostString(URL url, String body) {
       StringBuffer sb = new StringBuffer();

       // find the newline character(s) on the current system
       String newline = null;
       try {
           newline = System.getProperty("line.separator");
       } catch (Exception e) {
           newline = "\n";
       }

       try {
           // URL must use the http protocol!
           HttpURLConnection conn = (HttpURLConnection)
url.openConnection();

           conn.setRequestMethod("POST");
           conn.setAllowUserInteraction(false); // you may not ask
the user
           conn.setDoOutput(true); // we want to send things
           // the Content-type should be default, but we set it
anyway
           conn.setRequestProperty("Content-type",
                                   "application/x-www-form-
urlencoded");
           // the content-length should not be necessary, but we're
cautious
           conn.setRequestProperty("Content-length",
                                   Integer.toString(body.length()));

           // get the output stream to POST our form data
           OutputStream rawOutStream = conn.getOutputStream();
           PrintWriter pw = new PrintWriter(rawOutStream);

           pw.print(body); // here we "send" our body!
           pw.flush();
           pw.close();

           // get the input stream for reading the reply
           // IMPORTANT! Your body will not get transmitted if you
get the
           // InputStream before completely writing out your output
first!
           InputStream rawInStream = conn.getInputStream();

           // get response
           BufferedReader rdr = new BufferedReader(new
InputStreamReader(
                   rawInStream));
           String line;

           while ((line = rdr.readLine()) != null) {
               sb.append(line);
               sb.append(newline);
           }
           return sb.toString();
       } catch (Exception e) {
           System.out.println("Exception " + e.toString());
           e.printStackTrace();
       }
       return ""; // an exception occurred
   }

}

class MyAuthenticator extends Authenticator
  {
  /**
  * Called when password authorization is needed.
  * @return The PasswordAuthentication collected from the
  * user, or null if none is provided.
  */
  protected PasswordAuthentication getPasswordAuthentication()
     {
     return new PasswordAuthentication ( "usernameblah",
"passwordblah".toCharArray() );
     }
  }
Roedy Green - 23 Jul 2007 05:22 GMT
>What about Cookie?
Pretty much everything I know about Java I have written up in the Java
glossary.  Just look up plausible keywords and follow links.
http://mindprod.com
In this case:
http://mindprod.com/jgloss/cookie.html
Signature

Roedy Green Canadian Mind Products
The Java Glossary
http://mindprod.com

Roedy Green - 13 Jul 2007 17:25 GMT
>-Site uses https and POST method.

IIRC it is exactly the same as a regular post, except you use a https
url.

See http://mindprod.com/products1.html#HTTP
--
Roedy Green Canadian Mind Products
The Java Glossary
http://mindprod.com
anthony.mak@iname.com - 14 Jul 2007 02:39 GMT
On Jul 14, 2:25 am, Roedy Green <see_webs...@mindprod.com.invalid>
wrote:
> Seehttp://mindprod.com/products1.html#HTTP

How is this relate to the Authenticator you mentioned?
If I use the Authenticator, do I need to use your "HTTP GET/POST"
library?

Anthony
Roedy Green - 23 Jul 2007 05:49 GMT
>How is this relate to the Authenticator you mentioned?
>If I use the Authenticator, do I need to use your "HTTP GET/POST"
>library?

Please read http://mindprod.com/jgloss/authentication.html where I
explain this at length.

Authenticator is a Sun class. It is most peculiar the way it works.
You must register an Authenticator implementation, then forget about
authentication. It magically kicks in and does its thing as needed to
log you into a server. You just write you code ignoring logons.  You
need some sort of code like mine to do the interactions with the
server http://mindprod.com/products1.html#HTTP but you could use
anything.
Signature

Roedy Green Canadian Mind Products
The Java Glossary
http://mindprod.com

anthony.mak@iname.com - 14 Jul 2007 02:40 GMT
On Jul 14, 2:25 am, Roedy Green <see_webs...@mindprod.com.invalid>
wrote:
> Seehttp://mindprod.com/products1.html#HTTP

How is this relate to the Authenticator you mentioned?
If I use the Authenticator, do I need to use your "HTTP GET/POST"
library?

Anthony
Arne Vajhøj - 22 Jul 2007 22:31 GMT
> Problem:
> -Want to programmatically (a java program) login to a site, and
[quoted text clipped - 6 lines]
> and
> I cannot get it work...

Use:

http://jakarta.apache.org/commons/httpclient/

It takes care of all the details of session state.

Arne
Roedy Green - 23 Jul 2007 06:46 GMT
>http://jakarta.apache.org/commons/httpclient/
>It takes care of all the details of session state.
The catch is it is about 3 MB.  You would not want to download that on
every Applet.  You would want to pre-install it in an EXT directory or
use Java Web Start so it will be cached.
Signature

Roedy Green Canadian Mind Products
The Java Glossary
http://mindprod.com

Andrew Thompson - 23 Jul 2007 09:37 GMT
>>http://jakarta.apache.org/commons/httpclient/
>>It takes care of all the details of session state.
>The catch is it is about 3 MB.  ...

Not necessarily.  I am not familiar with the licence of
the HTTPClient, but it is technically possible to rejar
an API so that it only includes the classes immediately
required.  I am betting that will be a lot less than 3 meg.

>...You would not want to download that on
>every Applet.  ...

The OP stated (in the subject) 'not applet'.

>...You would want to pre-install it in an EXT directory or
>use Java Web Start so it will be cached.

..in fact, one might rejar a web start component
(as HTTPClient might be deployed) ..break it up
into one jar per package, and deploy them as 'lazy'
downloads, to let JWS do a somewhat less optimal,
but much simpler to deploy, option of the launch.

Not that I agree with helping for this end purpose,
short of the OP ever getting back to us on a few
points, but I am just saying..

Signature

Andrew Thompson
http://www.athompson.info/andrew/

Arne Vajhøj - 25 Jul 2007 02:00 GMT
>> http://jakarta.apache.org/commons/httpclient/
>> It takes care of all the details of session state.
> The catch is it is about 3 MB.  You would not want to download that on
> every Applet.

Did you read the subject line ?

Arne


Free Magazines

Get these publications absolutely FREE for up to 12 months. There are no hidden fees and no obligation. Simply choose a title, complete the application form and submit it. Read more ...

Oracle MagazineNetwork ComputingComputer WorldBio-IT WorldeWeekInformation WeekInfosecurity
 
Sign In
Join
My Latest Posts
My Monitored Threads
My Blog
My Photo Gallery
My Profile
My Homepage

Start New Thread
Enable EMail Alerts
Rate this Thread



©2008 Advenet LLC   Privacy Policy - Terms of Use
This website includes both content owned or controlled by Advenet as well as content owned or controlled by third parties.