|
@@ -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 value = if (queryM.size > 1) queryM[1] else ""
|
|
|
|
|
|
|
+ val separator = query.indexOf("=")
|
|
|
|
|
+ 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)
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|