pull/540/head
parent
ba6fc2e5d1
commit
ccedfdbfd3
@ -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