2016-06-23 1 views
0

を動作しない変換し、この要求を暗号化するRetrofit2カスタムコンバータに、私は私の要求を暗号化するためにRetrofit2(改造バージョン2.1.0 @)を使用する場合、私は、とても混乱していますstringConverterが

public interface API { 
     @FormUrlEncoded 
     @POST("login.do?os=" + ConstantValue.OS + "&version=" + ConstantValue.VERSION) 
     Observable<LoginInfo> login(@Field("cmd") String params); 
    } 

のようなAPI私のCoustom Converterメインコード

@Override 
    public Converter<ResponseBody, ?> responseBodyConverter(Type type, Annotation[] annotations, 
    Retrofit retrofit) { 
    TypeAdapter<?> adapter = gson.getAdapter(TypeToken.get(type)); 
    return new DecryptResponseBodyConverter<>(gson, adapter); 
    } 

    @Override 
    public Converter<?, RequestBody> requestBodyConverter(Type type, 
    Annotation[] parameterAnnotations, Annotation[] methodAnnotations, Retrofit retrofit) { 
    TypeAdapter<?> adapter = gson.getAdapter(TypeToken.get(type)); 
    return new EncryptRequestBodyConverter<>(gson, adapter); 
    } 

    @Override 
    public Converter<?, String> stringConverter(Type type, Annotation[]  annotations, Retrofit retrofit) { 
    TypeAdapter<?> adapter = gson.getAdapter(TypeToken.get(type)); 
    return new EncryptRequestStringConverter<>(gson,adapter); 
    } 

私のカスタムコンバータのメソッドstringConverterは動作しません。 retrofit2.BuildInConvert $ StringConverter最初、私はデフォルトのBuildInConvertersを見つけました。..

ヘルプ〜ヘルプ〜

答えて

0

鉱山前に実行し、そのstringConverterは、タイプがStringの要求をインターセプトします。

@Override public Converter<?, String> stringConverter(Type type, Annotation[] annotations,Retrofit retrofit) { 
     if (type == String.class) { 
      return StringConverter.INSTANCE; 
     } 
     return null; 
    } 

ので、私はそれが動作し、この

public interface API { 
    @FormUrlEncoded 
    @POST("login.do?os=" + ConstantValue.OS + "&version=" + ConstantValue.VERSION) 
    Observable<LoginInfo> login(@Field("cmd") JsonObject params); 

}

ように、パラメータの種類を変更します。

関連する問題