Кодировка URL-адреса HTTP в Scala / Java - PullRequest
2 голосов
/ 25 июня 2019

Мне нужна функция, которая загружает содержимое URL-адреса, но я не знаю заранее, закодирован ли URL-адрес или нет. Есть ли библиотечная функция, которая решает это?

Одним из возможных решений было бы сначала декодировать URL, а затем кодировать его, но мне пришлось бы обрабатывать каждую часть URL по-разному (в примере ниже символ ASCII отсутствует в части пути, но он также может быть в части запроса). Есть так много деталей для обработки, одна библиотека, которая обрабатывает это было бы замечательно.


object UrlContent extends App {
  def connect(urls: String): Int = {
    val url = new URL(urls)
    val conn: HttpURLConnection = url.openConnection().asInstanceOf[HttpURLConnection]

    conn.getResponseCode
  }

  val urls1 = "http://www.ins.gob.pe/insvirtual/images/otrpubs/pdf/ponzo%C3%B1osos.pdf"
  val urls2 = "http://www.ins.gob.pe/insvirtual/images/otrpubs/pdf/ponzoñosos.pdf"

  println(connect(urls1))
  println(connect(urls2))
}```

The output is:

200
404

1 Ответ

2 голосов
/ 25 июня 2019

Попробуйте lemonlabsuk / scala-uri , например,

import io.lemonlabs.uri.Url

val urls1 = Url.parse("http://www.ins.gob.pe/insvirtual/images/otrpubs/pdf/ponzo%C3%B1osos.pdf")
val urls2 = Url.parse("http://www.ins.gob.pe/insvirtual/images/otrpubs/pdf/ponzoñosos.pdf")

println(urls1)
println(urls2)

выводит в обоих случаях

http://www.ins.gob.pe/insvirtual/images/otrpubs/pdf/ponzo%C3%B1osos.pdf
http://www.ins.gob.pe/insvirtual/images/otrpubs/pdf/ponzo%C3%B1osos.pdf

, поэтому кажется, что он способен определить,URL уже закодирован.

...