2013-08-27 67 views
0

我有两个字符串数组这样使用URLEncoder.encode()发送字符串数组?

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?

在此先感谢!

+0

我想传递数组中的内容。以便其他一些Web应用程序可以解码URL并获取值! –

回答

0

尝试:

URL.encode(java.util.Arrays.toString(nearByColgs) , "UTF-8"); 
+0

我想通过数组中的内容将这种方式工作? –

+0

试试... n自己看看。让我知道它是否有效。 – codeMan

+0

您可能必须先将nearByColgs数组转换为JSON,然后对JSON字符串进行编码。使用URL.encode – codeMan

0

我假设你不仅要使用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个第一个字符排序并将它们用作分隔符。

请注意,所使用的split函数接受一个正则表达式作为参数,所以请小心typicel正则表达式字符,如*。

享受!