2017-06-29 34 views
0

我知道類似的question已被問及回答,但我的情況有點不同。如何提供自定義轉換器進行改造2

我有一個加密響應,當解密使得一個XML響應(解密被執行)。所以我不能使用SimpleXmlConverterFactory。由於使用Retrofit,我無法訪問響應的正文,我無法解密它。但是,如果我能以某種方式訪問​​響應主體(在轉換器工廠中或許或通過其他方式)並將其更改爲解密的XML,我可以繼續使用Retrofit。

所以我做了我的研究;雖然我不明白Converter.Factory很多我認爲有可能通過覆蓋這個或SimpleXmlConverterFactory來實現我的目標。但是如果沒有源代碼,我無法做到這一點。

所以這裏是我的問題:我可以通過任何方式使用Retrofit訪問和解密響應String

如果我可以管理,那麼我可以繼續使用Retrofit,否則我將不得不切換到HttpURLConnection。我不想這樣做,因爲這個加密的響應是針對單個呼叫響應的。

回答

0

您可以使用SimpleXmlConverter的來源編寫自定義轉換器。 你應該在convert的方法RequestBodyConverterResponseBodyConverter

+0

加上解密/加密是的,我已經到了那個部分,麻煩是我不明白*如何*串行器工作。串行器將讀取器作爲「ResponseBody」的輸入參數。我不能簡單地傳遞一個字符串。我想創建一個臨時文件併爲它提供流,但還沒有實現它。 – Abbas

+0

@Abbas從ResponseBody中取出bytestream或charstream進行解密。 你可能會發送到序列化程序的字符串或InputStream,請參閱http://simple.sourceforge.net/download/stream/doc/javadoc/org/simpleframework/xml/Serializer.html – DeKaNszn

+0

你不明白我已經解密了迴應但是我無法更改源中的值(大概在這種情況下,緩存)。但是我確實在'org.simpleframework.xml.Serializer'中找到了一個方法,其中源爲String。所以我都準備好了。感謝您的回覆。 – Abbas