You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@hc.apache.org by Jason Novotny <no...@aei.mpg.de> on 2004/10/02 20:16:56 UTC

convert usage if URLConnection to HttpClient

Hi,

    I had been using some crufty code using URLConnection to perform 
basic auth to retrieve the list of applications using the Tomcat manager 
webapp. I'd like to convert this to use commons-httpclient-2.0.1.

    It should be pretty simple I think-- what is required is to invoke 
http://127.0.0.1/manager?list performing basic authentication using name 
and password and then I get back a response which has a specific format.
    My current code is shown below and I'd like to know what the 3 or 5 
magic lines are to do the same thing using HttpClient.

    Thanks very much, Jason

try {
            String serverName = req.getServerName();
            int serverPort = req.getServerPort();
            URL u = new URL("http://" + serverName + ":" + serverPort + 
"/manager" + command);
            URLConnection con = u.openConnection();

            String up = USERNAME + ":" + PASSWORD;
            String encoding = null;
            // check to see if sun's Base64 encoder is available.
            try {
                sun.misc.BASE64Encoder encoder =
                        (sun.misc.BASE64Encoder)
                        
Class.forName("sun.misc.BASE64Encoder").newInstance();
                encoding = encoder.encode(up.getBytes());
            } catch (Exception ex) { // sun's base64 encoder isn't available
                throw new TomcatManagerException("No 
sun.misc.BASE64Encoder availoable in JDK!");
            }

            con.setRequestProperty("Authorization", "Basic " + encoding);
            con.setDoInput(true);
            con.setUseCaches(false);
            con.connect();

            if (con instanceof HttpURLConnection) {
                HttpURLConnection httpConnection = (HttpURLConnection) con;
                // test for 401 result (HTTP only)
                if (httpConnection.getResponseCode() == 
HttpURLConnection.HTTP_UNAUTHORIZED) {
                    throw new TomcatManagerException("HTTP Authorization 
failure!");
                }
            }

            BufferedReader reader = new BufferedReader(new 
InputStreamReader(con.getInputStream()));

            // get first line
            // should be something like:
            // OK - some information text
            String line = null;

            line = reader.readLine();
            StringTokenizer tokenizer = new StringTokenizer(line, "-");
            if (tokenizer.countTokens() == 2) {
                String rc = tokenizer.nextToken();
                String description = tokenizer.nextToken();
                result = new TomcatWebAppResult(rc, description);
            }

            while ((line = reader.readLine()) != null) {
                result.addWebAppDescriptor(line);
            }
            reader.close();

        } catch (IOException e) {
            throw new TomcatManagerException("Unable to perform command: 
", e);
        }


---------------------------------------------------------------------
To unsubscribe, e-mail: commons-httpclient-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: commons-httpclient-dev-help@jakarta.apache.org


Re: convert usage if URLConnection to HttpClient

Posted by Michael Becke <be...@u.washington.edu>.
Hi Jason,

Please have a look at the HttpClient authentication guide  
<http://jakarta.apache.org/commons/httpclient/authentication.html> and  
the basic authentication example  
<http://cvs.apache.org/viewcvs.cgi/jakarta-commons/httpclient/src/ 
examples/BasicAuthenticationExample.java? 
rev=1.1.2.3&only_with_tag=HTTPCLIENT_2_0_BRANCH>.  These should clear  
up any questions you may have.  Please let us know if you run into any  
trouble.

Mike


On Oct 2, 2004, at 2:16 PM, Jason Novotny wrote:

>
> Hi,
>
>    I had been using some crufty code using URLConnection to perform  
> basic auth to retrieve the list of applications using the Tomcat  
> manager webapp. I'd like to convert this to use  
> commons-httpclient-2.0.1.
>
>    It should be pretty simple I think-- what is required is to invoke  
> http://127.0.0.1/manager?list performing basic authentication using  
> name and password and then I get back a response which has a specific  
> format.
>    My current code is shown below and I'd like to know what the 3 or 5  
> magic lines are to do the same thing using HttpClient.
>
>    Thanks very much, Jason
>
> try {
>            String serverName = req.getServerName();
>            int serverPort = req.getServerPort();
>            URL u = new URL("http://" + serverName + ":" + serverPort +  
> "/manager" + command);
>            URLConnection con = u.openConnection();
>
>            String up = USERNAME + ":" + PASSWORD;
>            String encoding = null;
>            // check to see if sun's Base64 encoder is available.
>            try {
>                sun.misc.BASE64Encoder encoder =
>                        (sun.misc.BASE64Encoder)
>                         
> Class.forName("sun.misc.BASE64Encoder").newInstance();
>                encoding = encoder.encode(up.getBytes());
>            } catch (Exception ex) { // sun's base64 encoder isn't  
> available
>                throw new TomcatManagerException("No  
> sun.misc.BASE64Encoder availoable in JDK!");
>            }
>
>            con.setRequestProperty("Authorization", "Basic " +  
> encoding);
>            con.setDoInput(true);
>            con.setUseCaches(false);
>            con.connect();
>
>            if (con instanceof HttpURLConnection) {
>                HttpURLConnection httpConnection = (HttpURLConnection)  
> con;
>                // test for 401 result (HTTP only)
>                if (httpConnection.getResponseCode() ==  
> HttpURLConnection.HTTP_UNAUTHORIZED) {
>                    throw new TomcatManagerException("HTTP  
> Authorization failure!");
>                }
>            }
>
>            BufferedReader reader = new BufferedReader(new  
> InputStreamReader(con.getInputStream()));
>
>            // get first line
>            // should be something like:
>            // OK - some information text
>            String line = null;
>
>            line = reader.readLine();
>            StringTokenizer tokenizer = new StringTokenizer(line, "-");
>            if (tokenizer.countTokens() == 2) {
>                String rc = tokenizer.nextToken();
>                String description = tokenizer.nextToken();
>                result = new TomcatWebAppResult(rc, description);
>            }
>
>            while ((line = reader.readLine()) != null) {
>                result.addWebAppDescriptor(line);
>            }
>            reader.close();
>
>        } catch (IOException e) {
>            throw new TomcatManagerException("Unable to perform  
> command: ", e);
>        }
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail:  
> commons-httpclient-dev-unsubscribe@jakarta.apache.org
> For additional commands, e-mail:  
> commons-httpclient-dev-help@jakarta.apache.org
>


---------------------------------------------------------------------
To unsubscribe, e-mail: commons-httpclient-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: commons-httpclient-dev-help@jakarta.apache.org


Re: convert usage if URLConnection to HttpClient

Posted by Oleg Kalnichevski <ol...@apache.org>.
Jason,

Take a look at the HttpClient tutorial and the authentication guide.
That should get you started:

http://jakarta.apache.org/commons/httpclient/tutorial.html
http://jakarta.apache.org/commons/httpclient/authentication.html

Same code can be found here:

http://cvs.apache.org/viewcvs.cgi/jakarta-commons/httpclient/src/examples/BasicAuthenticationExample.java?rev=1.1.2.3&only_with_tag=HTTPCLIENT_2_0_BRANCH&view=markup

If all this will not help, let me know

Oleg

On Sat, 2004-10-02 at 20:16, Jason Novotny wrote:
> Hi,
> 
>     I had been using some crufty code using URLConnection to perform 
> basic auth to retrieve the list of applications using the Tomcat manager 
> webapp. I'd like to convert this to use commons-httpclient-2.0.1.
> 
>     It should be pretty simple I think-- what is required is to invoke 
> http://127.0.0.1/manager?list performing basic authentication using name 
> and password and then I get back a response which has a specific format.
>     My current code is shown below and I'd like to know what the 3 or 5 
> magic lines are to do the same thing using HttpClient.
> 
>     Thanks very much, Jason
> 
> try {
>             String serverName = req.getServerName();
>             int serverPort = req.getServerPort();
>             URL u = new URL("http://" + serverName + ":" + serverPort + 
> "/manager" + command);
>             URLConnection con = u.openConnection();
> 
>             String up = USERNAME + ":" + PASSWORD;
>             String encoding = null;
>             // check to see if sun's Base64 encoder is available.
>             try {
>                 sun.misc.BASE64Encoder encoder =
>                         (sun.misc.BASE64Encoder)
>                         
> Class.forName("sun.misc.BASE64Encoder").newInstance();
>                 encoding = encoder.encode(up.getBytes());
>             } catch (Exception ex) { // sun's base64 encoder isn't available
>                 throw new TomcatManagerException("No 
> sun.misc.BASE64Encoder availoable in JDK!");
>             }
> 
>             con.setRequestProperty("Authorization", "Basic " + encoding);
>             con.setDoInput(true);
>             con.setUseCaches(false);
>             con.connect();
> 
>             if (con instanceof HttpURLConnection) {
>                 HttpURLConnection httpConnection = (HttpURLConnection) con;
>                 // test for 401 result (HTTP only)
>                 if (httpConnection.getResponseCode() == 
> HttpURLConnection.HTTP_UNAUTHORIZED) {
>                     throw new TomcatManagerException("HTTP Authorization 
> failure!");
>                 }
>             }
> 
>             BufferedReader reader = new BufferedReader(new 
> InputStreamReader(con.getInputStream()));
> 
>             // get first line
>             // should be something like:
>             // OK - some information text
>             String line = null;
> 
>             line = reader.readLine();
>             StringTokenizer tokenizer = new StringTokenizer(line, "-");
>             if (tokenizer.countTokens() == 2) {
>                 String rc = tokenizer.nextToken();
>                 String description = tokenizer.nextToken();
>                 result = new TomcatWebAppResult(rc, description);
>             }
> 
>             while ((line = reader.readLine()) != null) {
>                 result.addWebAppDescriptor(line);
>             }
>             reader.close();
> 
>         } catch (IOException e) {
>             throw new TomcatManagerException("Unable to perform command: 
> ", e);
>         }
> 
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: commons-httpclient-dev-unsubscribe@jakarta.apache.org
> For additional commands, e-mail: commons-httpclient-dev-help@jakarta.apache.org
> 


---------------------------------------------------------------------
To unsubscribe, e-mail: commons-httpclient-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: commons-httpclient-dev-help@jakarta.apache.org