2017-06-29 12 views
0

私は同様のことを知っています。questionが尋ねられましたが、私のケースは少し異なります。Retrofit 2のカスタムコンバーターの提供方法

私はを暗号化しました。応答は復号化されたときにXML応答(復号化が実装されています)となります。だから私はSimpleXmlConverterFactoryを使用することはできません。 Retrofitと私はレスポンスの本文にアクセスできませんので、私はそれを解読できません。しかし、もし私が何らかの形で応答本体にアクセスすることができれば(それはおそらくコンバータの工場で何か他の方法で)解読されたXMLに変更して、私はRetrofitを使い続けることができます。

私は研究をしました。私はConverter.Factoryをよく理解していませんが、これを無効にするか、SimpleXmlConverterFactoryを上書きして目標を達成する方法があると思います。しかし、私はソースコードなしでそれを行うことはできません。

これは私の質問です。私はRetrofitを使用して何らかの手段で応答Stringにアクセスして解読できますか?

私はそれを管理することができますが、私はRetrofitを使用し続けることができる場合は、HttpURLConnectionに切り替える必要があります。この暗号化されたレスポンスは単一のコールレスポンスであるため、私はこれをやりたくありません。

答えて

0

SimpleXmlConverterのソースを使用してカスタムコンバータを書き込むことができます。 RequestBodyConverterの方法で復号化/暗号化を追加する必要があります。ResponseBodyConverter

+0

はい私は既にその部分に手をつけています。シリアライザは 'ResponseBody'から入力パラメータとしてリーダを受け取ります。私は文字列を単純に渡すことはできません。私は一時ファイルを作成してストリームを提供することを考えましたが、それをまだ実装していません。 – Abbas

+0

@Abbas 'ResponseBody'からのバイトストリームまたはcharstreamを取り出し、復号化します。 シリアライザStringまたはInputStreamに送信することができます。http://simple.sourceforge.net/download/stream/doc/javadoc/org/simpleframework/xml/Serializer.html – DeKaNszn

+0

あなたはすでにレスポンスを復号化しているとはわかりませんしかし、私はソース(この場合はおそらくキャッシュ)の値を変更できませんでした。しかし、 'org.simpleframework.xml.Serializer'の中でメソッドを見つけました。ここで' source'は 'String'として扱われます。だから私はすべて設定されています。しかし、返信をありがとう。 – Abbas

関連する問題