HttpURLConnection将json对象作为base64发送。为什么?

时间:2016-05-02 14:12:43

标签: java json http post

我有这段代码:

URL url = new URL("http://httpbin.org/post");
HttpURLConnection conn = (HttpURLConnection) url.openConnection();

conn.setRequestMethod("POST");
conn.setRequestProperty("Content-Type", "application/json");
conn.setRequestProperty("Accept", "application/json");
conn.setDoOutput(true);
conn.setDoInput(true);
String jSonString = JSONUtils.toJSONString(request);
byte[] outputInBytes = jSonString.getBytes();
OutputStream os = conn.getOutputStream();
os.write(outputInBytes);
os.close();

我想要的是将request对象作为JSON发送。问题是:JSON正在Base64中发送编码而没有我想要它。我打印jSonString并且它是正确的JSON,但是当我从httbin打印镜像响应时,我注意到JSON被发送了Base64编码。如果我解码它,它是正确的JSON对象字符串,但我不希望它被编码发送。有谁知道为什么会这样?

1 个答案:

答案 0 :(得分:-1)

可能是进行转化的jSonString.getBytes()。 API声明getBytes()“使用平台的默认字符集将此字符串编码为字节序列”。因此,它可能会根据运行环境而有所不同。

字符串也有getBytes(Charset charset)方法。我不熟悉所有的字符集,但也许尝试jSonString.getBytes("UTF8")会起作用。