PlayframeworkでFixieを使う
流行に乗って、Line botをPlayframework on Herokuで作ったのでメモ。
ここでは、Play WS APIを用い、Fixieのセットアップは済んだものとして進めます。
JVMのシステムパラメータでPROXYを指定する方法
procfileを変更
以下のパラメータを追加する。実際の値は適宜変更のこと。
パラメータ | 値 |
---|---|
http.proxyHost | xxx.usefixie.com |
http.proxyPort | 80 |
http.proxyUser | fixie |
http.proxyPassword | xxxxx |
Proxy-Authorizationヘッダをセットする
def example(implicit ws:WSClient) {
val encodedAuth = new BASE64Encoder().encode(new URL(System.getenv("FIXIE_URL")).getUserInfo.getBytes())
val request = ws.url(LINE_API_URL).withHeaders("Proxy-Authorization" -> s"Basic $encodedAuth")
....
}
これでFixie経由でリクエストが飛ぶようになりますが、これだとすべてのリクエストがFixie経由になってしまいます。
Fixieのtricycleプランは、100MB/月・500リクエスト/月の制限があるので、無駄に使いたくないですね。
同じようにhttp.nonProxyHosts
を指定すればいいですが、Line以外全部登録するとかだるい。
WSProxyServerを使う
def example(implicit ws:WSClient) {
val encodedAuth = new BASE64Encoder().encode(new URL(System.getenv("FIXIE_URL")).getUserInfo.getBytes())
ws.url(LINE_API_URL)
.withHeaders("Proxy-Authorization" -> s"Basic $encodedAuth")
.withProxyServer(
DefaultWSProxyServer(
host = "xxx.usefixie.com",
port = 80,
principal = Some("fixie"),
password = Some("xxxxx")
)
)
....
}
def example(implicit ws:WSClient) {
val encodedAuth = new BASE64Encoder().encode(new URL(System.getenv("FIXIE_URL")).getUserInfo.getBytes())
ws.url(LINE_API_URL)
.withHeaders("Proxy-Authorization" -> s"Basic $encodedAuth")
.withProxyServer(
DefaultWSProxyServer(
host = "xxx.usefixie.com",
port = 80,
principal = Some("fixie"),
password = Some("xxxxx")
)
)
....
}
こうすることで、.withProxyServer
したリクエストのみPROXY経由になります。Procfileのパラメータは消しておきましょう。
Author And Source
この問題について(PlayframeworkでFixieを使う), 我々は、より多くの情報をここで見つけました https://qiita.com/modal_soul/items/520426614811579a13b3著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .