4

私はGroovyを初めて使用し、RESTサービス応答からヘッダーを解析しようとしています。文字列は次のとおりです。

[http:// localhost:4545 / third-party-web?code = IVJZw1]

私はコーディングしようとしていますIVJZw1

それは簡単で、私はすぐに助けを得ることを願っています。

あぞう

4

3 に答える 3

7

手早く汚いものが必要な場合は、正規表現を使用できます。

def str = '[http://localhost:4545/third-party-web?code=IVJZw1]'
def code = (str =~ /code=(\w*)/)[0][1]
assert code == 'IVJZw1'

「コード」パラメータは英数字(\w)で構成されていると想定しています。

ただし、URL からパラメーター値を頻繁に抽出する場合、このソリューションはすぐにひどく汚れてしまいます。特に別の関数で URL パラメーターを取得するロジックを抽出できる場合は、ataylorが提案したようなものがおそらくより適切です。多分URLクラス自体のメソッドでさえ:D

import java.net.*

// Retrieves the query parameters of a URL a Map.
URL.metaClass.getQueryParams = { ->
    delegate.query.split('&').collectEntries { param -> 
        param.split('=').collect { URLDecoder.decode(it) }
    }.asImmutable()
}

// Then that method can be used directly on URLs :)
def str = '[http://localhost:4545/third-party-web?code=IVJZw1]'
def code = new URL(str[1..-2]).queryParams.code
assert code == 'IVJZw1'
于 2012-05-11T00:11:10.030 に答える
0

Commons Http Client は、クライアント側の認証、HTTP 状態管理、および HTTP 接続管理をサポートする Java の HTTP エージェント実装です。これには、ライブラリ httpclient-4.1.2.jar、httpcore-4.1.2.jar、httpmime-4.1.2.jar、httpclient-cache-4.1.2.jar、commons-codec.jar、commons-logging-1.1 が必要です。 1.jar をクラスパスに入れます。次の例は、URI クエリ パラメーターを解析する方法を示しています。

API

http://hc.apache.org/httpcomponents-client-ga/httpclient/apidocs/org/apache/http/client/utils/URLEncodedUtils.html

あなたが使用できるよく知られたライブラリです

String url = "http://www.example.com/something.html?one=11111&two=22222&three=33333";
List<NameValuePair> params = URLEncodedUtils.parse(new URI(url), "UTF-8");

for (NameValuePair param : params) {
  System.out.println(param.getName() + " : " + param.getValue());
}

出力

1: 11111

2 : 22222

3 : 33333

于 2014-08-08T09:19:43.413 に答える