Hey!
Just a debugging suggestion,
>/* get the cookie sent back by the servlet container for later...*/
//Do a servCon.getHearderFieldKey() to see if the key Set-Cookie
//really exists. If it does, print it out. If not correct, then look at your
//applet code again.
> m_strCurrentCookie = servCon.getHeaderField("Set-Cookie");
> m_strCurrentCookie = m_strCurrentCookie.substring(0,
> m_strCurrentCookie.indexOf(";"));
Sans adieu,
Danny Rubis
Mike Grady wrote:
> (NOTE: this is the duplicate of a post I sent to the
> Tomcat user's mailing list. So far (a few hours only)
> I've gotten no replies. I have searched the arhives of
> this list, but have found no *direct* statements about
> why the following may/may not work. -mg)
>
> Hello all,
>
> I'm developing a GUI applet in swing that communicates
> with Servlets handling a multitude of connections
> to other applications. Strangely enough, one thing
> I'm having problem with is sending the JSESSIONID
> cookie back to Tomcat (through Apache, if that
> matters).
>
> This seems relatively straightforward, but does not work when
> the cookie is a existing JSESSIONID. By not work, I mean that
> I get no response from my servlet, and no apparent errors in
> the "tomcat.log" file. My servlet code is supposed to bounce the
> header information sent by the client back in the form of HTML.
> (The applet and servlet code are included below).
>
> Note that I've hard-coded strings into the cookie property, even
> strings with JSESSIONID={some bogus id} and the servlet
> is invoked and returns just fine (of course, it creates a new
> session). So, the servlet (or Tomcat) only has problems when
> the session id maps to a current session. Here is the header
> my applet sends to Tomcat and below that is the servlet
> source. If anyone has any suggestions as to why Tomcat
> (or the Servlet API) doesn't like this, please let me know.
> (This is Apache 1.3.11, Tomcat 3.1 release build)
>
> Thanks in advance,
>
> Mike Grady
>
> Sample HTTP header sent to Tomcat/Servlet (servlet does NOT respond)
>
> content-type=application/x-www-form-urlencoded
> connection=keep-alive
> cookie=JSESSIONID=To1037mC4023944164377369At
> accept=text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2
> host=devbox
> content-length=63
> user-agent=Java1.3.0
>
> In my JApplet, I have code like the following:
>
> HttpURLConnection servCon = (HttpURLConnection)
> urlServlet.openConnection();
>
> if (m_strCurrentCookie.length() > 0)
> {
> servCon.setRequestProperty("Cookie", m_strCurrentCookie);
> }
>
> servCon.setDoOutput(true);
> servCon.setDoInput(true);
> servCon.setRequestMethod("POST");
>
> StringBuffer postString = new StringBuffer();
>
> /*I set some variables in the post string */
>
> java.io.DataOutputStream out = new java.io.DataOutputStream(
> servCon.getOutputStream());
>
> out.writeBytes(postString.toString());
> out.close();
>
> java.io.BufferedReader in = new java.io.BufferedReader(
> new java.io.InputStreamReader(
> servCon.getInputStream()));
>
> /* get the cookie sent back by the servlet container for later...*/
> m_strCurrentCookie = servCon.getHeaderField("Set-Cookie");
> m_strCurrentCookie = m_strCurrentCookie.substring(0,
> m_strCurrentCookie.indexOf(";"));
>
> /*Do something with return from servlet*/
>
> This is my Servlet:
>
> public class Bounce extends javax.servlet.http.HttpServlet
> {
> public void doPost(javax.servlet.http.HttpServletRequest request,
> javax.servlet.http.HttpServletResponse response)
> {
> javax.servlet.http.HttpSession session = request.getSession(true);
>
> /* get the contents of the request and "bounce" them back to the
> user*/
> java.util.Enumeration headerContents = request.getHeaderNames();
> java.lang.StringBuffer headerString = new
> java.lang.StringBuffer("");
> while (headerContents.hasMoreElements())
> {
> java.lang.String headerKey = (java.lang.String)
> headerContents.nextElement();
> headerString.append(headerKey + "=");
> headerString.append(request.getHeader(headerKey) + "<BR>");
> }
>
> /*get an input stream and store it in another string*/
> java.lang.StringBuffer bodyStream = new java.lang.StringBuffer();
> try
> {
> java.io.BufferedReader bodyReader = new java.io.BufferedReader(
> new
> java.io.InputStreamReader(request.getInputStream()));
>
> java.lang.String bodyLine;
> while ((bodyLine = bodyReader.readLine()) != null)
> {
> bodyStream.append(bodyLine);
> }
> bodyReader.close();
>
> response.setContentType("text/html");
> java.io.PrintWriter outPost = response.getWriter();
>
> outPost.println("<HTML>");
> outPost.println("<TITLE>Bounce!</TITLE>");
> outPost.println("<BODY><H3>Header Data follows</H3><BR>");
> outPost.print(headerString.toString());
> outPost.println("<BR><H3>POST Data follows</H3><BR>");
> outPost.print(bodyStream.toString());
> outPost.println("</BODY>");
> outPost.println("</HTML>");
> }
> catch (java.io.IOException ioE)
> {
> System.out.println("IOException!");
> }
> }
> }
>
> ___________________________________________________________________________
> To unsubscribe, send email to [EMAIL PROTECTED] and include in the body
> of the message "signoff SERVLET-INTEREST".
>
> Archives: http://archives.java.sun.com/archives/servlet-interest.html
> Resources: http://java.sun.com/products/servlet/external-resources.html
> LISTSERV Help: http://www.lsoft.com/manuals/user/user.html
___________________________________________________________________________
To unsubscribe, send email to [EMAIL PROTECTED] and include in the body
of the message "signoff SERVLET-INTEREST".
Archives: http://archives.java.sun.com/archives/servlet-interest.html
Resources: http://java.sun.com/products/servlet/external-resources.html
LISTSERV Help: http://www.lsoft.com/manuals/user/user.html