Java: Autentificarse en Google (llamada HTTPS POST) / Google Authentication (HTTPS POST call)

12/Feb/2009, Category: Programación, Tecnología, Tags: , , , ,

El siguiente es código en Java para hacer un llamada HTTPS POST. Lo probé en JavaSE 6:

Next is Java code to do HTTP POST call. I tested it using JavaSE 6:

        try {
            // Parece no ser necesario / It seems innecessary:
            // System.setProperty("java.protocol.handler.pkgs", "com.sun.net.ssl.internal.www.protocol");
            // java.security.Security.addProvider(new com.sun.net.ssl.internal.ssl.Provider());
            URL url = new URL("https://www.google.com/accounts/ClientLogin");
            HttpURLConnection connection = (HttpURLConnection) url.openConnection();
            connection.setDoInput(true);
            connection.setDoOutput(true);
            connection.setRequestMethod("POST");
            HttpURLConnection.setFollowRedirects(true);
            String query = URLEncoder.encode("accountType", "UTF-8") + "=" + URLEncoder.encode("GOOGLE", "UTF-8");
            query += "&" + URLEncoder.encode("Email", "UTF-8") + "=" + URLEncoder.encode("EMAIL@gmail.com", "UTF-8");
            query += "&" + URLEncoder.encode("Passwd", "UTF-8") + "=" + URLEncoder.encode("PASSWORD", "UTF-8");
            query += "&" + URLEncoder.encode("service", "UTF-8") + "=" + URLEncoder.encode("xapi", "UTF-8");
            query += "&" + URLEncoder.encode("source", "UTF-8") + "=" + URLEncoder.encode("COMPANY-PRODUCT-VERSION", "UTF-8");
            //connection.setRequestProperty("Accept-Encoding","gzip");
            connection.setRequestProperty("Content-length", String.valueOf(query.length()));
            connection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
            connection.setRequestProperty("User-Agent", "Mozilla/4.0 (compatible; MSIE 5.0; Windows 98; DigExt)");
            // open up the output stream of the connection
            DataOutputStream output = new DataOutputStream(connection.getOutputStream());
            // write out the data
            int queryLength = query.length();
            output.writeBytes(query);
            //output.close();
            System.out.println("Resp Code:" + connection.getResponseCode());
            System.out.println("Resp Message:" + connection.getResponseMessage());
            // get ready to read the response from the cgi script
            DataInputStream input = new DataInputStream(connection.getInputStream());
            // read in each character until end-of-stream is detected
            for (int c = input.read(); c != -1; c = input.read()) {
                System.out.print((char) c);
            }
            input.close();
        } catch (Exception e) {
            System.out.println("Something bad just happened.");
            System.out.println(e);
            e.printStackTrace();
        }

Referencia / References:

Bookmark and Share

Deja tu Comentario / Leave a Reply