java - 使用 URLEncoder.encode() 发送字符串数组?

标签 java url-encoding

我有两个像这样的字符串数组

String nearByColgs[]= {"461161","158179","218756","103456","184842","122560","118279"};
String interests[] ={"java","cricket"};

现在我想使用 URL.encode() 发送它们

问题是 URL.encode() 仅支持字符串,例如

 URL.encode("http://www.google.com","UTF-8");

有什么可能的解决方法可以一次发送整个数组(例如nearByColgs)?

提前致谢!!

最佳答案

我假设您不仅想使用 url 编码发送它,而且在另一端也对其进行解码并返回相同的 2 个字符串数组变量。

正如您已经发现的,您需要将字符串数组转换为单个字符串变量。

另一篇文章展示了如何轻松地将字符串数组转换为单个字符串。但它没有显示如何解析它。

您需要的是 2 个分隔符(例如逗号和分号),一个用于分隔数组中的值,另一个用于分隔数组。

StringBuilder b = new StringBuilder();
b.append(nearByColgs[0]);
for (int i=1; i<nearByColgs.length;i++) {
    b.append(',').append(nearByColgs[i]);
}
b.append(';')
b.append(interests[0]);
for (int i=1; i<interests.length;i++) {
    b.append(',').append(interests[i]);
}
String concatenated = b.toString();
String encoded = URLEncoder.encode(concatenated ,"UTF-8");

在另一侧,您再次解码编码版本。

String decoded = URLDecoder.decode(encoded, "UTF-8");
String[] subArrays = decoded.split(";")

然后您可以再次恢复原始数据

String[] nearbyColgs = subArrays[0].split(",");
String interests = subArrays[1].split(",");

当然,只有当您的原始数据不包含所使用的 2 个分隔符之一时,这才有效。

如果是这样,请使用其他分隔符(如“a”和“b”,或任何您需要的分隔符)或使用更复杂的算法来连接字符串并使用引用方案(如 CSV 标准)。

或者编码逻辑查找 2 个未使用的字符,并将这 2 个字符添加为要编码的字符串中的第一个字符,解码端接收编码字符串,对其进行解码并截取前 2 个字符并将其用作分隔符。

请注意,所使用的 split 函数接受正则表达式作为参数,因此请小心使用 * 等典型正则表达式字符。

享受吧!

关于java - 使用 URLEncoder.encode() 发送字符串数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18462436/

相关文章:

ios - url编码错误

java - 除了 Jsoup 还有其他解析器吗?

java - 字符串/路径比较

Java处理特殊字符请求参数

ios - 避免在 Restkit 路由器上进行 uri 编码

ruby-on-rails - 在 Rails 3 的 URL 段中允许编码斜线的最佳方式是什么?

java - 如何在 arraylist 中找到前 20 个最常用的单词

java - Spring Boot 和 @CrossOrigin 仅带有 POST 注释

java - java中执行程序服务的范围?

php - 使用 Swift 在 POST 请求中将正确转义的 JSON 提交给 PHP