Browse Source

improve url param handling

tags/2.0.1
Jonathan Cobb 4 years ago
parent
commit
bd7400c5b5
2 changed files with 10 additions and 11 deletions
  1. +9
    -11
      src/main/java/org/cobbzilla/util/http/HttpUtil.java
  2. +1
    -0
      src/main/java/org/cobbzilla/util/http/URIUtil.java

+ 9
- 11
src/main/java/org/cobbzilla/util/http/HttpUtil.java View File

@@ -491,18 +491,21 @@ public class HttpUtil {
public static String chaseRedirects(String url) { return chaseRedirects(url, 5); }

public static String chaseRedirects(String url, int maxDepth) {
log.info("chaseRedirects("+url+") starting...");
// strip tracking params
final int qPos = url.indexOf("?");
if (qPos != -1) {
final Map<String, String> params = URIUtil.queryParams(url);
final StringBuilder b = new StringBuilder();
for (Map.Entry<String, String> param : params.entrySet()) {
if (!isBlockedParam(param.getKey())) {
if (b.length() > 0) b.append("&");
b.append(param.getKey()).append("=").append(urlEncode(param.getValue()));
if (!params.isEmpty()) {
final StringBuilder b = new StringBuilder();
for (Map.Entry<String, String> param : params.entrySet()) {
if (!isBlockedParam(param.getKey())) {
if (b.length() > 0) b.append("&");
b.append(param.getKey()).append("=").append(urlEncode(param.getValue()));
}
}
url = url.substring(0, qPos+1) + b.toString();
}
url = url.substring(0, qPos+1) + b.toString();
}
String lastHost;
try {
@@ -568,9 +571,4 @@ public class HttpUtil {
.setHeader(USER_AGENT, USER_AGENT_CURL);
}

public static void main (String[] args) {
final String url = "https://t.co/4mmxH7Mwlj?amp=1";
final String dest = chaseRedirects(url);
System.out.println("dest = "+dest);
}
}

+ 1
- 0
src/main/java/org/cobbzilla/util/http/URIUtil.java View File

@@ -91,6 +91,7 @@ public class URIUtil {
public static Map<String, String> queryParams(String query) {
if (empty(query) || empty(query.trim()) || query.trim().equals("?")) return Collections.emptyMap();
if (query.contains("?")) query = query.substring(query.indexOf("?")+1);
if (empty(query)) return Collections.emptyMap();
final Map<String, String> query_pairs = new LinkedHashMap<>();
final String[] pairs = query.split("&");
for (String pair : pairs) {


Loading…
Cancel
Save