【问题标题】:How to print http request when using Dispatch and Scala使用 Dispatch 和 Scala 时如何打印 http 请求
【发布时间】:2026-01-27 00:10:01
【问题描述】:

当我使用 Dispatch 库和 Scala 时,出于调试目的,如何在编写这样的语句后以文本形式打印出带有标头等的整个 HTTP 请求?

val svc = url("http://api.hostip.info/country.php")

【问题讨论】:

    标签: scala http scala-dispatch


    【解决方案1】:

    Dispatch 基于 Netty.io,它完全实现了 sl4j 日志外观。调试日志记录已通过以下方式为您完成:

    com.ning.http.client
    

    小心,它记录了 LOT 的废话。我假设您使用 ch.qos.logback 进行日志记录:

    转到src/main/resources,创建一个名为default.logback.xml 的文件,并在其中添加以下内容:

    <configuration>
    
      <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
        <!-- encoders are assigned the type
             ch.qos.logback.classic.encoder.PatternLayoutEncoder by default -->
        <encoder>
          <pattern>%-4relative [%thread] %-5level %logger{35} - %msg %n</pattern>
        </encoder>
      </appender>
    
      <root level="DEBUG">
        <appender-ref ref="STDOUT" />
      </root>
    </configuration>
    

    【讨论】:

      【解决方案2】:

      假设您使用的是最新版本的库,url(...) 返回一个Req,它只是com.ning.http.client.RequestBuilder 的一个薄包装。您可以使用svc.toRequest 获取底层请求对象,然后您可以调用toString 或结合其他可用方法,具体取决于您真正想要的信息。更多信息:

      Java doc for Request

      Source for dispatch

      【讨论】: