diff --git a/client/src/main/java/org/apache/sqoop/client/request/ResourceRequest.java b/client/src/main/java/org/apache/sqoop/client/request/ResourceRequest.java index e7f49f44..1d411838 100644 --- a/client/src/main/java/org/apache/sqoop/client/request/ResourceRequest.java +++ b/client/src/main/java/org/apache/sqoop/client/request/ResourceRequest.java @@ -42,12 +42,18 @@ import java.net.HttpURLConnection; import java.net.InetSocketAddress; import java.net.URL; +import java.nio.charset.Charset; import java.util.Locale; /** * Represents the sqoop REST resource requests */ public class ResourceRequest { + /** + * Charset used for Sqoop 2 protocol + */ + private static final Charset CHARSET = Charset.forName("UTF-8"); + private static final Logger LOG = Logger.getLogger(ResourceRequest.class); private DelegationTokenAuthenticatedURL.Token authToken; @@ -79,7 +85,7 @@ protected String doHttpRequest(String strURL, String method, String data) { if (method.equalsIgnoreCase(HttpMethod.PUT) || method.equalsIgnoreCase(HttpMethod.POST)) { conn.setDoOutput(true); data = data == null ? "" : data; - conn.setRequestProperty("Content-Length", Integer.toString(data.getBytes().length)); + conn.setRequestProperty("Content-Length", Integer.toString(data.getBytes(CHARSET).length)); // Send request wr = new DataOutputStream(conn.getOutputStream()); wr.writeBytes(data); @@ -92,7 +98,7 @@ protected String doHttpRequest(String strURL, String method, String data) { int responseCode = conn.getResponseCode(); if (responseCode == HttpURLConnection.HTTP_OK) { - reader = new BufferedReader(new InputStreamReader(conn.getInputStream())); + reader = new BufferedReader(new InputStreamReader(conn.getInputStream(), CHARSET)); String line = reader.readLine(); while (line != null) { result.append(line); @@ -115,7 +121,7 @@ protected String doHttpRequest(String strURL, String method, String data) { ThrowableBean ex = new ThrowableBean(); result = new StringBuilder(); - reader = new BufferedReader(new InputStreamReader(conn.getErrorStream())); + reader = new BufferedReader(new InputStreamReader(conn.getErrorStream(), CHARSET)); String line = reader.readLine(); while (line != null) { result.append(line); @@ -129,7 +135,7 @@ protected String doHttpRequest(String strURL, String method, String data) { throw new SqoopException(ClientError.CLIENT_0001, ex.getThrowable()); } else { result = new StringBuilder(); - reader = new BufferedReader(new InputStreamReader(conn.getErrorStream())); + reader = new BufferedReader(new InputStreamReader(conn.getErrorStream(), CHARSET)); String line; while ((line = reader.readLine()) != null) { result.append(line);