如何在scalaj-http中打印使用Http()方法发送的完整HTTP请求和响应?

时间:2019-07-03 06:31:15

标签: scala http scalaj-http

我想使用scalaj-http中的Http()方法记录发送的完整HTTP请求和接收的响应。怎么做。

我的Http()方法代码如下:

Http(url)
      .method("GET")
      .params(queryParameters )
      .option(HttpOptions.allowUnsafeSSL)
      .timeout(connTimeoutMs = HttpConnectionProperties.httpConTimeout, readTimeoutMs = HttpConnectionProperties.httpReadTimeout)
      .asString

我想记录在后台发送的完整HTTP请求和响应。

1 个答案:

答案 0 :(得分:0)

根据Printing HttpRequests? #93

,似乎没有开箱即用的东西
  

HttpRequest并非与通过   电线,它只是某些客户端状态的包装。目前没有   准确打印出像卷发一样通过电线发送的内容的方法

我们可以创建一个包装实用程序函数,将其记录为副作用

def httpWithLogging(...) = {
  val request = 
    Http(url)
      .method("GET")
      .params(queryParameters )
      .option(HttpOptions.allowUnsafeSSL)
      .timeout(connTimeoutMs = HttpConnectionProperties.httpConTimeout, 
  readTimeoutMs = HttpConnectionProperties.httpReadTimeout)

  val response = request.asString

  println(request)
  println(response)

  response.asString
}

我们还可以通过以下方式启用详细的wire logging

System.setProperty("javax.net.debug","all")

但可以是noisy