2016-05-02 20 views
0

私はこのコードを持っている:Jsonオブジェクトをbase64として送信するHttpURLConnection。どうして?

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(); 

私はそれをしたい、何がJSONとしてrequestオブジェクトを送信することです。問題は、JSONがBase64でエンコードして送信していることです。私はjSonStringを印刷し、それは正しいJSONですが、httbinからミラーリングされた応答を印刷すると、JSONがBase64でエンコードされて送信されていることがわかります。デコードすると、正しいJSONオブジェクト文字列になりますが、エンコードされたものを送信したくありません。誰がなぜこれが起こっているのか知っていますか?

+0

私はこれを再現できません。 'jSonString'が正しいJSONであると言うなら、あなたのコードの中にbase64は何も生成されません。応答を返すときにhttpbinサービスがそれを実行している必要があります。 –

答えて

-1

変換を行うのはjSonString.getBytes()です。 APIは、getBytes()が "この文字列をプラットフォームのデフォルト文字セットを使用して一連のバイトにエンコードする"と記述しています。したがって、これが実行されている環境に応じて異なる可能性があります。

文字列にはgetBytes(Charset charset)メソッドもあります。私はすべての文字セットに慣れていないが、恐らくjSonString.getBytes("UTF8")を試してみるとよいだろう。

+0

あなたはキャラクターセットが何であるか誤解していると思います。 –

関連する問題