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 に変換するものと、スペースを + に変換するものの 2 つがあります。

最初に、UriUtils を使用します。

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

2 つ目は、UrlEncoder を使用します。

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

または(私が思うに)UTF-16でURLEncoderを使用して、必要なものを取得することもできます。

私は UriUtils で楽しい時間を過ごしたことがないので、UrlEncoder がうまく機能することを願っています。

于 2014-07-16T22:20:19.457 に答える