From 282233131a7f67876be7cf5ab6b6315714af5c74 Mon Sep 17 00:00:00 2001 From: ikechan8370 Date: Fri, 24 Nov 2023 15:18:50 +0800 Subject: [PATCH] =?UTF-8?q?`Shamrock`:=20fix=20=E9=9D=9E=E5=B8=B8=E3=81=AB?= =?UTF-8?q?=E5=A5=87=E5=A6=99=E3=81=AA=E3=83=95=E3=82=A9=E3=83=BC=E3=83=A0?= =?UTF-8?q?=E3=83=87=E3=83=BC=E3=82=BF=E3=81=AE=E5=95=8F=E9=A1=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../fuqiuluo/qqinterface/servlet/GroupSvc.kt | 51 +++++++++++-------- 1 file changed, 30 insertions(+), 21 deletions(-) diff --git a/xposed/src/main/java/moe/fuqiuluo/qqinterface/servlet/GroupSvc.kt b/xposed/src/main/java/moe/fuqiuluo/qqinterface/servlet/GroupSvc.kt index fe62d2e..c1b9dc0 100644 --- a/xposed/src/main/java/moe/fuqiuluo/qqinterface/servlet/GroupSvc.kt +++ b/xposed/src/main/java/moe/fuqiuluo/qqinterface/servlet/GroupSvc.kt @@ -16,16 +16,17 @@ import com.tencent.qqnt.kernel.nativeinterface.MemberInfo import com.tencent.qqnt.kernel.nativeinterface.MsgConstant import friendlist.stUinInfo import io.ktor.client.call.body -import io.ktor.client.plugins.onUpload +import io.ktor.client.request.forms.MultiPartFormDataContent import io.ktor.client.request.forms.formData import io.ktor.client.request.forms.submitForm -import io.ktor.client.request.forms.submitFormWithBinaryData import io.ktor.client.request.get import io.ktor.client.request.header import io.ktor.client.request.post import io.ktor.client.request.setBody +import io.ktor.http.ContentType import io.ktor.http.Headers import io.ktor.http.HttpHeaders +import io.ktor.http.contentType import io.ktor.http.headers import io.ktor.http.parameters import kotlinx.coroutines.DelicateCoroutinesApi @@ -46,7 +47,6 @@ import moe.fuqiuluo.proto.asInt import moe.fuqiuluo.proto.asUtf8String import moe.fuqiuluo.proto.protobufOf import moe.fuqiuluo.qqinterface.servlet.entries.ProhibitedMemberInfo -import moe.fuqiuluo.shamrock.helper.Level import moe.fuqiuluo.shamrock.helper.LogCenter import moe.fuqiuluo.shamrock.helper.MessageHelper import moe.fuqiuluo.shamrock.remote.service.data.EssenceMessage @@ -831,28 +831,37 @@ internal object GroupSvc: BaseSvc() { @OptIn(ExperimentalSerializationApi::class) suspend fun uploadImageTroopNotice(image: String): Result { - // 图片上传有问题 val file = FileUtils.parseAndSave(image) val cookie = TicketSvc.getCookie("qun.qq.com") val bkn = TicketSvc.getBkn(TicketSvc.getRealSkey(TicketSvc.getUin())) - val response = GlobalClient.submitFormWithBinaryData( - url = "https://web.qun.qq.com/cgi-bin/announce/upload_img", - formData = formData { - append("filename", "001.png") - append("source", "troopNotice") - append("bkn", bkn) - append("m", "0") - append("pic_up", file.readBytes(), Headers.build { - append(HttpHeaders.ContentType, "image/png") - append(HttpHeaders.ContentDisposition, "filename=\"001.png\"") - }) - }, - block = { - headers { - header("Cookie", cookie) - } + val response = GlobalClient.post("https://web.qun.qq.com/cgi-bin/announce/upload_img") { + headers { + header("Cookie", cookie) } - ) + contentType(ContentType.MultiPart.FormData) + setBody(MultiPartFormDataContent( + // 黑人问号 ktor默认formdata传的tx不认。默认是name=bkn,非要写成name="bkn"才认? + formData { + append("filename", "001.png", Headers.build { + append(HttpHeaders.ContentDisposition, "name=\"filename\"") + }) + append("source", "troopNotice", Headers.build { + append(HttpHeaders.ContentDisposition, "name=\"source\"") + }) + append("bkn", bkn, Headers.build { + append(HttpHeaders.ContentDisposition, "name=\"bkn\"") + }) + append("m", "0", Headers.build { + append(HttpHeaders.ContentDisposition, "name=\"m\"") + }) + append("pic_up", file.readBytes(), Headers.build { + append(HttpHeaders.ContentType, "image/png") + append(HttpHeaders.ContentDisposition, "name=\"pic_up\" filename=\"001.png\"") + + }) + } + )) + } val body = Json.decodeFromStream(response.body()) if (body.jsonObject["ec"].asInt == 0) { var idJsonStr = body.jsonObject["id"].asStringOrNull