2016-11-17 15 views
2

私はクエリ文字列をbyte []として投稿する必要があります。これどうやってするの?この目的のためのコンバータは何ですか? 私はこのコードを使用する場合:retrofitを使用して文字列をbyte []として投稿する方法

Call<ResponseBody> login(@Body byte[] body); 

を、私はこのエラーを取得する:

Unable to create @Body converter for byte[] 

答えて

0

例インターフェイスは次のようになりためにあなたは、基本的なRequestBodyを使用することができます。

@POST("/login") 
Call<ResponseBody> login(@Body RequestBody body); 

、その後:

final byte[] byteArray = ...; 
RequestBody typedBytes = new RequestBody() { 
    @Override 
    public MediaType contentType() { 
     return MediaType.parse("application/json"); 
    } 

    @Override 
    public void writeTo(BufferedSink sink) throws IOException { 
     sink.write(byteArray); 
    } 
}; 
rest.login(typedBytes).enqueue(...); 

MIMEの種類は、もちろんあなたの場合に依存します。

+0

この文字列をbyte []: 'username = myname&password = mypass'に変換したいと思います。どんなMIMEタイプを使用すべきですか? – fullOfQuestion

+0

これはRetrofitの '@ Query'ではなく、なぜバイト配列としてクエリを送信するのか疑問に思えますか?それでも、 'text/plain'はうまくいくはずです。 –

+0

いいえ、動作しませんでした。私は改造の代わりにボレーを使用しなければならないと思う:| – fullOfQuestion

関連する問題