fix(chat): 修复聊天消息解析和字符串构建问题
- 将StringBuilder替换为String变量以避免清空问题 - 添加JSON数据前缀处理,移除"data:"前缀 - 修复字符串拼接方式,使用+=操作符替代appendLine - 优化结果发布逻辑,直接发布字符串而非toString()调用
这个提交包含在:
父节点
6801b998e2
当前提交
d47ec13546
@ -20,28 +20,29 @@ class ChatVM : BaseViewModel() {
|
||||
HttpManager.getApi(Service::class.java).chat(ChatData("我的代办任务有哪些?"))
|
||||
.subscribeOn(Schedulers.io())
|
||||
.subscribe({ body ->
|
||||
val sb = StringBuilder()
|
||||
var sb = ""
|
||||
body.charStream().buffered().use { reader ->
|
||||
try {
|
||||
var line: String?
|
||||
while (reader.readLine().also { line = it } != null) {
|
||||
val l = line!!
|
||||
if (l.isNotEmpty()) {
|
||||
val model = GsonImplHelp.get().toObject(l, ChatModel::class.java)
|
||||
val json = if (l.startsWith("data:")) l.removePrefix("data:").trim() else l
|
||||
val model = GsonImplHelp.get().toObject(json, ChatModel::class.java)
|
||||
if (t != model.type) {
|
||||
sb.clear()
|
||||
sb = ""
|
||||
}
|
||||
t = model.type
|
||||
if (model.type == "string") {
|
||||
val model1 =
|
||||
GsonImplHelp.get().toObject(l, ChatModel1::class.java)
|
||||
sb.appendLine(model1.data)
|
||||
GsonImplHelp.get().toObject(json, ChatModel1::class.java)
|
||||
sb+=model1.data
|
||||
} else {
|
||||
val model2 =
|
||||
GsonImplHelp.get().toObject(l, ChatModel2::class.java)
|
||||
sb.appendLine(model2.data.content)
|
||||
GsonImplHelp.get().toObject(json, ChatModel2::class.java)
|
||||
sb+=model2.data.content
|
||||
}
|
||||
result.postValue(sb.toString())
|
||||
result.postValue(sb)
|
||||
}
|
||||
}
|
||||
} catch (e: Exception) {
|
||||
|
||||
正在加载...
在新工单中引用
屏蔽一个用户