mirror of
https://github.com/whitechi73/OpenShamrock.git
synced 2024-08-14 13:12:17 +08:00
Shamrock
: fix 非常に奇妙なフォームデータの問題
This commit is contained in:
parent
edf857bcb6
commit
282233131a
@ -16,16 +16,17 @@ import com.tencent.qqnt.kernel.nativeinterface.MemberInfo
|
|||||||
import com.tencent.qqnt.kernel.nativeinterface.MsgConstant
|
import com.tencent.qqnt.kernel.nativeinterface.MsgConstant
|
||||||
import friendlist.stUinInfo
|
import friendlist.stUinInfo
|
||||||
import io.ktor.client.call.body
|
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.formData
|
||||||
import io.ktor.client.request.forms.submitForm
|
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.get
|
||||||
import io.ktor.client.request.header
|
import io.ktor.client.request.header
|
||||||
import io.ktor.client.request.post
|
import io.ktor.client.request.post
|
||||||
import io.ktor.client.request.setBody
|
import io.ktor.client.request.setBody
|
||||||
|
import io.ktor.http.ContentType
|
||||||
import io.ktor.http.Headers
|
import io.ktor.http.Headers
|
||||||
import io.ktor.http.HttpHeaders
|
import io.ktor.http.HttpHeaders
|
||||||
|
import io.ktor.http.contentType
|
||||||
import io.ktor.http.headers
|
import io.ktor.http.headers
|
||||||
import io.ktor.http.parameters
|
import io.ktor.http.parameters
|
||||||
import kotlinx.coroutines.DelicateCoroutinesApi
|
import kotlinx.coroutines.DelicateCoroutinesApi
|
||||||
@ -46,7 +47,6 @@ import moe.fuqiuluo.proto.asInt
|
|||||||
import moe.fuqiuluo.proto.asUtf8String
|
import moe.fuqiuluo.proto.asUtf8String
|
||||||
import moe.fuqiuluo.proto.protobufOf
|
import moe.fuqiuluo.proto.protobufOf
|
||||||
import moe.fuqiuluo.qqinterface.servlet.entries.ProhibitedMemberInfo
|
import moe.fuqiuluo.qqinterface.servlet.entries.ProhibitedMemberInfo
|
||||||
import moe.fuqiuluo.shamrock.helper.Level
|
|
||||||
import moe.fuqiuluo.shamrock.helper.LogCenter
|
import moe.fuqiuluo.shamrock.helper.LogCenter
|
||||||
import moe.fuqiuluo.shamrock.helper.MessageHelper
|
import moe.fuqiuluo.shamrock.helper.MessageHelper
|
||||||
import moe.fuqiuluo.shamrock.remote.service.data.EssenceMessage
|
import moe.fuqiuluo.shamrock.remote.service.data.EssenceMessage
|
||||||
@ -831,28 +831,37 @@ internal object GroupSvc: BaseSvc() {
|
|||||||
|
|
||||||
@OptIn(ExperimentalSerializationApi::class)
|
@OptIn(ExperimentalSerializationApi::class)
|
||||||
suspend fun uploadImageTroopNotice(image: String): Result<GroupAnnouncementMessageImage> {
|
suspend fun uploadImageTroopNotice(image: String): Result<GroupAnnouncementMessageImage> {
|
||||||
// 图片上传有问题
|
|
||||||
val file = FileUtils.parseAndSave(image)
|
val file = FileUtils.parseAndSave(image)
|
||||||
val cookie = TicketSvc.getCookie("qun.qq.com")
|
val cookie = TicketSvc.getCookie("qun.qq.com")
|
||||||
val bkn = TicketSvc.getBkn(TicketSvc.getRealSkey(TicketSvc.getUin()))
|
val bkn = TicketSvc.getBkn(TicketSvc.getRealSkey(TicketSvc.getUin()))
|
||||||
val response = GlobalClient.submitFormWithBinaryData(
|
val response = GlobalClient.post("https://web.qun.qq.com/cgi-bin/announce/upload_img") {
|
||||||
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 {
|
headers {
|
||||||
header("Cookie", cookie)
|
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<JsonElement>(response.body())
|
val body = Json.decodeFromStream<JsonElement>(response.body())
|
||||||
if (body.jsonObject["ec"].asInt == 0) {
|
if (body.jsonObject["ec"].asInt == 0) {
|
||||||
var idJsonStr = body.jsonObject["id"].asStringOrNull
|
var idJsonStr = body.jsonObject["id"].asStringOrNull
|
||||||
|
Loading…
x
Reference in New Issue
Block a user