0

我正在他们自己的 IDE 中为 SmartThings (www.smartthings.com) 编写应用程序。我这里有一个输入字段,应该是文本输入。我要一个出发地址:

section("Departing From:"){
    input "departFrom", "text", title: "Address?"
}

当输入值的值时,Monterey, CA它会神奇地更改为 JSON 数组,其值为[Monterey, CA]

我想将此值传递给httpGET语句,但我需要URLencode首先省略空格等URLencoder。由于 JSON 数组,我尝试过但没有成功。

我试过join(",")没有运气,因为它在值中添加了双引号。

如何Monterey%2C%20CA从此变量中获取干净的 URL 编码值?

** 请记住,有人可以在此输入中输入数字、空格和逗号的任意组合作为地址。我发送给它的 mapquest API 可以处理所有这些事情,只要它们没有特殊字符并且空格是 URL 编码的。

4

2 回答 2

0

也许尝试:

def l = ['Monterey', 'CA']
assert URLEncoder.encode(l.join(', ')).replaceAll('\\+','%20') == 'Monterey%2C%20CA'

关于更换+标志,请看这里

于 2014-07-17T07:32:04.227 回答
-1

有不同类型的 URL 编码,但在这种情况下有两种:一种将空格转换为 %20,另一种将空格转换为 +。

首先,您将使用 UriUtils:

def yourEncodedString = UriUtils.encodeUri(yourString.toString(), "UTF-8")

对于第二个,您将使用 UrlEncoder:

def yourEncodedString = URLEncoder.encode(yourString.toString(), "UTF-8")

或者(我认为)您可以使用带有 UTF-16 的 URLEncoder 来获得您想要的。

我从来没有玩过 UriUtils,所以希望 UrlEncoder 对你有用。

于 2014-07-16T22:20:19.457 回答