Просмотр исходного кода

fix(AnalyzeUrl): analyzeFields

Xwite 4 лет назад
Родитель
Сommit
7c742cad8e
1 измененных файлов с 12 добавлено и 7 удалено
  1. 12 7
      app/src/main/java/io/legado/app/model/analyzeRule/AnalyzeUrl.kt

+ 12 - 7
app/src/main/java/io/legado/app/model/analyzeRule/AnalyzeUrl.kt

@@ -211,24 +211,29 @@ class AnalyzeUrl(
     }
 
     /**
-     * 解析QueryMap
+     * 解析QueryMap <key>=<value>
+     * name=
+     * name=name
+     * name=<BASE64> eg name=bmFtZQ==
      */
     private fun analyzeFields(fieldsTxt: String) {
         queryStr = fieldsTxt
         val queryS = fieldsTxt.splitNotBlank("&")
         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 (NetworkUtils.hasUrlEncoded(value)) {
-                    fieldMap[queryM[0]] = value
+                    fieldMap[key] = value
                 } else {
-                    fieldMap[queryM[0]] = URLEncoder.encode(value, "UTF-8")
+                    fieldMap[key] = URLEncoder.encode(value, "UTF-8")
                 }
             } else if (charset == "escape") {
-                fieldMap[queryM[0]] = EncoderUtils.escape(value)
+                fieldMap[key] = EncoderUtils.escape(value)
             } else {
-                fieldMap[queryM[0]] = URLEncoder.encode(value, charset)
+                fieldMap[key] = URLEncoder.encode(value, charset)
             }
         }
     }