在 scala 中寻找处理重定向的 http 客户端

发布于 2024-12-21 22:35:07 字数 109 浏览 0 评论 0原文

我正在 scala 中寻找一个处理重定向的 http 客户端。如何在 scala 中获取 Url 的内容并处理重定向?

我看到了 scala.io.Source 示例,但它们不处理重定向。

I am looking for a http client in scala, that handles redirects. How do I fetch the content of a Url in scala, handling redirects?

I saw the scala.io.Source examples, but they dont handle redirects.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

岁吢 2024-12-28 22:35:08

如果您不想使用类似 HttpClient 的东西(这可能对任何事情都更好)除了玩具示例之外),您可以修改 URLConnection

def urlToStream(url: String) = Source.fromInputStream(
  (new java.net.URL(url).openConnection match {
    case connection: java.net.HttpURLConnection => {
      connection.setInstanceFollowRedirects(true)
      connection
    }
    case connection => connection
  }).getInputStream
)

如果协议是 HTTP,这将打开重定向。

If you don't want to use something like HttpClient (which is probably better for anything beyond toy examples), you can tinker with the URLConnection:

def urlToStream(url: String) = Source.fromInputStream(
  (new java.net.URL(url).openConnection match {
    case connection: java.net.HttpURLConnection => {
      connection.setInstanceFollowRedirects(true)
      connection
    }
    case connection => connection
  }).getInputStream
)

This will turn on redirect following if the protocol is HTTP.

甜点 2024-12-28 22:35:08

您可以使用 Finagle 建立一个客户端。不过它的级别相当低,直接在 HttpRequest => 上工作。 Future[HttpResponse] 级别,因此需要少量工作才能处理重定向。

You can use Finagle to build a client. It is pretty low-level though, working directly at the HttpRequest => Future[HttpResponse] level, so it requires a small amount of work to get it to handle a redirect.

是伱的 2024-12-28 22:35:08

你检查过派遣吗? http://dispatch.databinder.net/Dispatch.html

它包装了 HttpClient,所以你可以这样做HttpClient 可以做任何事情,但是是以 Scala 的方式。在我看来,它对奇怪的操作员来说有点重,应该拼写出更多的东西,但我已经使用它一两年了,并且喜欢它的很多东西。

Did you check out Dispatch? http://dispatch.databinder.net/Dispatch.html

It wraps HttpClient, so you can do anything HttpClient can do, but in a Scala way. IMO, it's a bit heavy on weird operators, and should spell more things out, but I have been using it for a year or two and like many things about it.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文