W3C home > Mailing lists > Public > www-jigsaw@w3.org > March to April 2003

Using the HTTPManager to make a POST

From: Laird, Brian <BLaird@perseco.com>
Date: Thu, 20 Mar 2003 14:48:13 -0600
Message-ID: <45A6279F82E4CA4BBDC0F4EFC7B6A2FE127E99@atlas.perseco.com>
To: <www-jigsaw@w3.org>

I am looking to perform a login to a remote server, so I have written a filter which performs the sign in and then sends the user their session cookies.  The problem I am having is getting the POST data to be sent as a part of the original POST.  According to the packet sniffer I have, the post data is being sent in a separate message as a HTTP Continue, but the backend server replies prior to getting the request formatted as the HTTP Continue.  Below is my code snippet, if someone could let me know what I am doing wrong, I would really appreciate it.

Thanks in advance for any help,
Brian            
           


	HttpManager manager = HttpManager.getManager();
            org.w3c.www.protocol.http.Request server_request = manager.createRequest();
            server_request.setMethod(HTTP.POST);
            server_request.setURL(new URL(getLoginURL()));
            server_request.setAllowUserInteraction(false);
            server_request.setCookie(request.getCookie());
            
            // Update the client request fields:
            Enumeration e = request.enumerateHeaderDescriptions();
            while ( e.hasMoreElements() ) {
                HeaderDescription d = (HeaderDescription) e.nextElement();
                HeaderValue       v = request.getHeaderValue(d);
                if ( v != null )
                server_request.setHeaderValue(d, v);
            }

            server_request.removeHeader("keep-alive");
            // By removing that HOST, we make sure the real Host header gets
            // computed by the client side API
            server_request.setHeaderValue(org.w3c.www.protocol.http.Request.H_HOST,null);

            // build the post data
            PipedOutputStream output_stream = new PipedOutputStream();
            OutputStreamWriter writer = new OutputStreamWriter(output_stream);
            PipedInputStream input_stream = new PipedInputStream(output_stream);
            StringBuffer post_data = new StringBuffer();
            post_data.append(getUsernameField());
            post_data.append("=");
            post_data.append(username);
            post_data.append("&");
            post_data.append(getPasswordField());
            post_data.append("=");
            post_data.append(getPassword());
            writer.write(post_data.toString());
            writer.flush();
	// if I don't do this the runRequest never completes
            writer.close();
            server_request.setOutputStream(input_stream);
            Reply reply = manager.runRequest(server_request);
            cookieList = reply.getCookie();
Received on Thursday, 20 March 2003 15:51:53 GMT

This archive was generated by hypermail 2.2.0+W3C-0.50 : Monday, 9 April 2012 12:13:36 GMT