私はGroovyを初めて使用しています。私はRESTサービスの応答からヘッダーを解析しようとしています。 文字列は以下の通りです:Groovyで文字列を解析していますか?
[http://localhost:4545/third-party-web?code=IVJZw1]
私はコードIVJZw1
にしようとしています。
簡単ですが、私は速やかに助けを求めます。
azou
私はGroovyを初めて使用しています。私はRESTサービスの応答からヘッダーを解析しようとしています。 文字列は以下の通りです:Groovyで文字列を解析していますか?
[http://localhost:4545/third-party-web?code=IVJZw1]
私はコードIVJZw1
にしようとしています。
簡単ですが、私は速やかに助けを求めます。
azou
角括弧が削除されている場合は、単なるURLです。あなたが迅速かつ汚い何かをしたい場合は、正規表現を使用することができます
import java.net.*
def str = '[http://localhost:4545/third-party-web?code=IVJZw1]'
def url = new URL(str.replaceFirst('^\\[', '').replaceFirst(']$', ''))
def paramMap = url.query.split('&').collectEntries { param ->
param.split('=').collect { URLDecoder.decode(it) }
}
assert paramMap['code'] == 'IVJZw1'
:あなたはこのような何かを試みることができる
ありdef str = '[http://localhost:4545/third-party-web?code=IVJZw1]'
def code = (str =~ /code=(\w*)/)[0][1]
assert code == 'IVJZw1'
私は「コード」パラメータは英数字で構成されていると( \w
)。
ただし、URLからパラメータ値を抽出することが非常に頻繁にある場合は、このソリューションはすぐに非常に汚くなります。 ataylor suggestedのようなものは、別の機能でURLパラメータを取得するロジックを抽出できる場合は、おそらくより適切でしょう。 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'
コモンズHTTPクライアントは、クライアント側の認証、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
は、私がSOAPUIでグルーヴィースクリプトでこれを使用していますし、私はあなたが
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());
}
出力
one : 11111
two : 22222
three : 33333
を使用することができますよく知られたライブラリです次のエラーが発生します: –
groovy.lang.MissingMethodException:いいえメソッドのシグネチャ:java.util.ArrayList.replaceFirst()は、引数の型に適用されます。(java.lang.String、java.lang.String)values:[^ \ [、] –
何かを得るための多くの作業のようですは、等号の後に小括弧を引いたものです。 –