fix(AnalyzeUrl): analyzeFields

This commit is contained in:
Xwite authored and GitHub committed 2022-10-03 16:28:27 +08:00
1 parent f816cab5bb
commit 7c742cad8e
1 file changed
+12 -7
@@ -211,24 +211,29 @@ class AnalyzeUrl(
} }
/** /**
* 解析QueryMap * 解析QueryMap <key>=<value>
* name=
* name=name
* name=<BASE64> eg name=bmFtZQ==
*/ */
private fun analyzeFields(fieldsTxt: String) { private fun analyzeFields(fieldsTxt: String) {
queryStr = fieldsTxt queryStr = fieldsTxt
val queryS = fieldsTxt.splitNotBlank("&") val queryS = fieldsTxt.splitNotBlank("&")
for (query in queryS) { for (query in queryS) {
val queryM = query.splitNotBlank("=") val separator = query.indexOf("=")
val value = if (queryM.size > 1) queryM[1] else "" if (separator == -1) continue
val value = query.slice(separator + 1)
val key = query.slice(0, separator)
if (charset.isNullOrEmpty()) { if (charset.isNullOrEmpty()) {
if (NetworkUtils.hasUrlEncoded(value)) { if (NetworkUtils.hasUrlEncoded(value)) {
fieldMap[queryM[0]] = value fieldMap[key] = value
} else { } else {
fieldMap[queryM[0]] = URLEncoder.encode(value, "UTF-8") fieldMap[key] = URLEncoder.encode(value, "UTF-8")
} }
} else if (charset == "escape") { } else if (charset == "escape") {
fieldMap[queryM[0]] = EncoderUtils.escape(value) fieldMap[key] = EncoderUtils.escape(value)
} else { } else {
fieldMap[queryM[0]] = URLEncoder.encode(value, charset) fieldMap[key] = URLEncoder.encode(value, charset)
} }
} }
} }