Hi Thom,

The 2109 implementation uses the version of the cookies set by the
server.  My guess is that the Set-Cookie header is setting the cookies
with version 0.  This is what 2109 will send back.

Mike

On 9/7/05, Thom Hehl <[EMAIL PROTECTED]> wrote:
> OK, I think I'm beginning to understand what's going on with my cookie
> problem, but need some more guidance if anyone can help.
> 
> Here is my sourcecode:
> 
>     /**
>      * Constructor
>      * @param base the base URL from which all CGI scripts will be relative
>      * @param user user name to use for logging in
>      * @param passwd password to use for logging in
>      */
>     public ItoolsRepublish(String base, String user, String passwd)
>     {
>         MyLog.setLevel(Level.DEBUG);
>         MyLog.info("Constructor");
>         if(MyLog.isDebugEnabled())
>         {
>             MyLog.debug("base:"+base);
>             MyLog.debug("user:"+user);
>             MyLog.debug("passwd:"+passwd);
>         }
>         //create a singular HttpClient object
>         Client = new HttpClient();
> 
>         //establish a connection within 5 seconds
>         Client.getHttpConnectionManager().
>             getParams().setConnectionTimeout(TIMEOUT);
>         Client.getHostConfiguration().setHost(base, 80, "http");
>         Client.getParams().setCookiePolicy(CookiePolicy.RFC_2109);
> 
>         StringBuffer sb=new StringBuffer("http://";);
>         sb.append(base);
>         sb.append(ADMIN);
> 
>         UrlBase=sb.toString();
>         User=user;
>         Password=passwd;
>     }
> 
>     /**
>      * process the admin script to re-publish the web pages
>      * @throws heavyweight.Exception for a variety of problems
>      */
>     public void process()
>         throws heavyweight.Exception,
>                java.io.IOException
>     {
>         String response;
> 
>         // Prepare login parameters
>         NameValuePair userid   = new NameValuePair("id", User);
>         NameValuePair password = new NameValuePair("pw", Password);
> 
>         //and login
>         response=execute(UrlBase, new NameValuePair[] {userid, password});
>         response=execute(UrlBase, new NameValuePair[] {
>                             new NameValuePair("setup_options_edit","1")});
> 
>     }
> 
>     /**
>      * execute a method
>      * @param url the url to be executed
>      * @param parms a name value pair array of parameters to pass to the
>      *              script.
>      * @return a string containing the HTML returned
>      * @throws heavyweight.Exception for a variety of problems
>      */
>     private String execute(String url, NameValuePair[] parms)
>         throws heavyweight.Exception
>     {
>         PostMethod method = new PostMethod(url);
> 
>         if(parms==null)
>         {
>             throw new IllegalArgumentException("Must pass paramters to
> execute (url, parms). For no parms, use execute(String)\n");
>         }
>         method.setRequestBody(parms);
> 
>         //execute the method
>         String responseBody = null;
>         int tries=0;
>         boolean successful=false;
> 
>         do
>         {
>             try
>             {
>                 Client.executeMethod(method);
>                 responseBody = method.getResponseBodyAsString();
>                 successful=true;
>             } catch (HttpException he)
>             {
>                 StringBuffer sb=new StringBuffer("Http error connecting
> to '");
>                 sb.append(url);
>                 sb.append("'\n");
>                 MyLog.error(sb.toString());
>                 MyLog.error(he.getMessage());
> 
>                 if(++tries>RETRY_COUNT)
>                 {
>                     throw new heavyweight.Exception(sb.toString(), he);
>                 }
>             } catch (IOException ioe)
>             {
>                 StringBuffer sb=new StringBuffer("Unable to connect to '");
>                 sb.append(url);
>                 sb.append("'\n");
>                 MyLog.error(sb.toString());
>                 MyLog.error(ioe.getMessage());
> 
>                 if(++tries>RETRY_COUNT)
>                 {
>                     throw new heavyweight.Exception(sb.toString(), ioe);
>                 }
>             }
>         } while(!successful);
> 
>         //write out the request headers
>         System.out.println("*** Request ***");
>         System.out.println("Request Path: " + method.getPath());
>         System.out.println("Request Query: " + method.getQueryString());
>         Header[] requestHeaders = method.getRequestHeaders();
>         for (int i=0; i<requestHeaders.length; i++){
>             System.out.print(requestHeaders[i]);
>         }
> 
>         //write out the cookies
>         if(MyLog.isDebugEnabled())
>         {
>             MyLog.debug("*** Cookies ***");
>             for(Cookie ck:Client.getState().getCookies())
>             {
>                 MyLog.debug(ck.toString());
>             }
>         }
> 
>         //write out the response headers
>         System.out.println("*** Response ***");
>         System.out.println("Status Line: " + method.getStatusLine());
>         Header[] responseHeaders = method.getResponseHeaders();
>         for (int i=0; i<responseHeaders.length; i++){
>             System.out.print(responseHeaders[i]);
>         }
> 
>         //write out the response body
>         System.out.println("*** Response Body ***");
>         System.out.println(responseBody);
> 
>         //clean up the connection resources
>         method.releaseConnection();
> 
>         return responseBody;
>     }
> 
> Now the problem appears to be that my cookie doesn't make it from the
> first request for login into the second request to do something. I've
> been researching this and have maybe figured something out.
> 
> As you can see in my source, I am using CookiePolicy.RFC_2109. I pulled
> the spec for this from http://www.ietf.org/rfc/rfc2109.txt which says:
> 
>    Version=version
>       Required.  The Version attribute, a decimal integer, identifies to
>       which version of the state management specification the cookie
>       conforms.  For this specification, Version=1 applies.
> 
> 
> 
> 
> 
> 
> But in my request header, when it sends the cookies back, it says:
> Cookie: $Version=0; id=bmedia
> Cookie: $Version=0; pw=solutions
> Cookie: $Version=0; listing_search=
> Cookie: $Version=0; listing_keyword=
> Cookie: $Version=0; listing_pagenum=1
> 
> According to RFC_2109, shouldn't this be $Version=1? Could this be
> causing me to lose my login information on following attempts to access
> the web page?
> 
> Please advise.
> 
> Thanks.
> 
> 
> 
> --
> "In every revolution, there is one man with a vision."--Jerome Bixby
> 
> Thom Hehl
> <A href="www.heavyweightsoftware.com"> www.heavyweightsoftware.com</A>
> 
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
> 
>

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to