2
Help us understand the problem. What are the problem?

More than 3 years have passed since last update.

posted at

GroovyのURL#getTextや#getBytesでヘッダなどを設定する方法

 Groovyでは、URLクラスを使って簡単にファイルをダウンロードできたり、Web APIのレスポンスをテキストファイルとして保存できたりします。

 このようにです。

new File(imageName) << new URL(imageUrl).getBytes()
new File(tempName) << new URL(url).getText()

 さて、これらのメソッドでヘッダなどの設定はできないのでしょうか?

 実はURL#getTextURL#getBytesには次のMapを引数にとるオーバーロードがあります。

 それぞれのドキュメントによると、Mapの要素として次のものが有効なようです。

connectTimeout : the connection timeout
readTimeout : the read timeout
useCaches : set the use cache property for the URL connection
allowUserInteraction : set the user interaction flag for the URL connection
requestProperties : a map of properties to be passed to the URL connection

 この部分のコードを見てみます。

 requestPropertiesで渡したMapは、URL#getBytes(java.util.Map) or URL#getText(java.util.Map)の内部で生成しているURLConnectionsetRequestPropertyの呼び出しに使われます。

 次のコードはUserAgentAccept-Languageを設定して、URL#getText(java.util.Map)を呼び出すコードです。

new File(tempName) << new URL(url).getText(requestProperties: [
    "UserAgent": "YOUR USER AGENT",
    "Accept-Language", "jp"
])
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
2
Help us understand the problem. What are the problem?