私はGroovyを初めて使用し、RESTサービス応答からヘッダーを解析しようとしています。文字列は次のとおりです。
[http:// localhost:4545 / third-party-web?code = IVJZw1]
私はコーディングしようとしていますIVJZw1
。
それは簡単で、私はすぐに助けを得ることを願っています。
あぞう
手早く汚いものが必要な場合は、正規表現を使用できます。
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'
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
あなたが使用できるよく知られたライブラリです
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