Merge branch 'master' of https://github.com/gedoor/legado
commit
a2859a53d8
@ -0,0 +1,13 @@ |
|||||||
|
package io.legado.app.help.http |
||||||
|
|
||||||
|
import okhttp3.Response |
||||||
|
import rxhttp.wrapper.annotation.Parser |
||||||
|
|
||||||
|
@Parser(name = "ByteArray") |
||||||
|
class ByteParser : rxhttp.wrapper.parse.Parser<ByteArray> { |
||||||
|
|
||||||
|
override fun onParse(response: Response): ByteArray { |
||||||
|
return response.body()!!.bytes() |
||||||
|
} |
||||||
|
|
||||||
|
} |
@ -0,0 +1,33 @@ |
|||||||
|
package io.legado.app.help.http |
||||||
|
|
||||||
|
import io.legado.app.utils.EncodingDetect |
||||||
|
import io.legado.app.utils.UTF8BOMFighter |
||||||
|
import okhttp3.Response |
||||||
|
import rxhttp.wrapper.annotation.Parser |
||||||
|
import rxhttp.wrapper.exception.HttpStatusCodeException |
||||||
|
import java.nio.charset.Charset |
||||||
|
|
||||||
|
@Parser(name = "Text") |
||||||
|
class TextParser(val encode: String? = null) : rxhttp.wrapper.parse.Parser<String> { |
||||||
|
|
||||||
|
override fun onParse(response: Response): String { |
||||||
|
|
||||||
|
val responseBody = response.body() ?: throw HttpStatusCodeException(response, "内容为空") |
||||||
|
val responseBytes = UTF8BOMFighter.removeUTF8BOM(responseBody.bytes()) |
||||||
|
var charsetName: String? = encode |
||||||
|
|
||||||
|
charsetName?.let { |
||||||
|
return String(responseBytes, Charset.forName(charsetName)) |
||||||
|
} |
||||||
|
|
||||||
|
//根据http头判断 |
||||||
|
responseBody.contentType()?.charset()?.let { |
||||||
|
return String(responseBytes, it) |
||||||
|
} |
||||||
|
|
||||||
|
//根据内容判断 |
||||||
|
charsetName = EncodingDetect.getHtmlEncode(responseBytes) |
||||||
|
return String(responseBytes, Charset.forName(charsetName)) |
||||||
|
} |
||||||
|
|
||||||
|
} |
Loading…
Reference in new issue