diff --git a/oauth2_http/java/com/google/auth/oauth2/CloudShellCredentials.java b/oauth2_http/java/com/google/auth/oauth2/CloudShellCredentials.java index 4d22f2e45..24035f0c7 100644 --- a/oauth2_http/java/com/google/auth/oauth2/CloudShellCredentials.java +++ b/oauth2_http/java/com/google/auth/oauth2/CloudShellCredentials.java @@ -32,12 +32,13 @@ package com.google.auth.oauth2; import com.google.api.client.json.JsonParser; +import com.google.common.base.Charsets; import com.google.common.base.MoreObjects; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; -import java.io.PrintWriter; +import java.io.OutputStream; import java.net.Socket; import java.util.ArrayList; import java.util.List; @@ -57,9 +58,10 @@ public class CloudShellCredentials extends GoogleCredentials { * Javascript Protobufers, preceeded by the message length and a * new line character. However, the request message has no content, * so a token request consists of an empty JsPb, and its 2 character - * lenth prefix. + * length prefix. */ protected final static String GET_AUTH_TOKEN_REQUEST = "2\n[]"; + protected final static byte[] GET_AUTH_TOKEN_REQUEST_BYTES = (GET_AUTH_TOKEN_REQUEST + "\n").getBytes(Charsets.UTF_8); private final int authPort; @@ -96,10 +98,9 @@ public AccessToken refreshAccessToken() throws IOException { Socket socket = new Socket("localhost", this.getAuthPort()); socket.setSoTimeout(READ_TIMEOUT_MS); AccessToken token; - try { - PrintWriter out = - new PrintWriter(socket.getOutputStream(), true); - out.println(GET_AUTH_TOKEN_REQUEST); + try { + OutputStream os = socket.getOutputStream(); + os.write(GET_AUTH_TOKEN_REQUEST_BYTES); BufferedReader input = new BufferedReader(new InputStreamReader(socket.getInputStream()));