備忘録

備忘録

KotlinでFuelにProxyを設定する方法

Ⅰ. はじめに

タイトルの通り「KotlinでFuelにProxyを設定する方法」です。

Ⅱ. サンプルプログラム

1. 通常の方法
import com.github.kittinunf.fuel.Fuel
import com.github.kittinunf.fuel.core.FuelManager
import com.google.gson.JsonParser
import java.net.InetSocketAddress
import java.net.Proxy

fun main(args: Array<String>) {
    FuelManager.instance.proxy = Proxy(Proxy.Type.HTTP, InetSocketAddress("127.0.0.1", 8008))

    val (request, response, result) = Fuel.get("http://httpbin.org/get").responseString()
    println(result.get())
}
2. オレオレ証明書のチェックを省く方法
import com.github.kittinunf.fuel.Fuel
import com.github.kittinunf.fuel.core.FuelManager
import com.google.gson.JsonParser
import java.net.InetSocketAddress
import java.net.Proxy
import java.security.cert.X509Certificate
import javax.net.ssl.SSLContext
import javax.net.ssl.TrustManager
import javax.net.ssl.X509TrustManager

class MyX509TrustManager : X509TrustManager {
  override fun checkClientTrusted(p0: Array<out X509Certificate>?, p1: String?) {
  }

  override fun checkServerTrusted(p0: Array<out X509Certificate>?, p1: String?) {
  }

  override fun getAcceptedIssuers(): Array<X509Certificate> {
    return arrayOf()
  }
}

fun main(args: Array<String>) {
  val sslContext = SSLContext.getInstance("SSL")
  sslContext.init(null, arrayOf<TrustManager>(MyX509TrustManager()), java.security.SecureRandom())
  FuelManager.instance.socketFactory = sslContext.socketFactory
  FuelManager.instance.proxy = Proxy(Proxy.Type.HTTP, InetSocketAddress("127.0.0.1", 8008))

  val (request, response, result) = Fuel.get("http://httpbin.org/get").responseString()
  println(result.get())
}