https://kevinlocke.name/bits/2012/10/03/ssl-certificate-verification-in-dispatch-and-asynchttpclient/

я есть следующий нерабочий код:

object Main extends App {
  import dispatch._

  def test(address: String) = {
    Await.result(Http.default(url(address).GET OK as.String), Duration.Inf)
  }

  // This works fine
  val s1 = test("http://download.finance.yahoo.com/d/quotes.csv?s=MSFT&f=sohgbav")
  println(s1)

  // This throws Exception 1
  val s2 = test("http://www.alphavantage.co/query?function=TIME_SERIES_DAILY_ADJUSTED&symbol=MSFT&apikey=demo&datatype=csv")
  println(s2) 

  // This throws Exception 2
  val s3 = test("https://www.alphavantage.co/query?function=TIME_SERIES_DAILY_ADJUSTED&symbol=MSFT&apikey=demo&datatype=csv")
  println(s3) 
}

Я хотел бы знать, почему "s1" работает нормально, тогда как "s2" и "s3" генерируют исключения. Исключения:

Исключение 1:

[error]   ! access URL
[error]    java.util.concurrent.ExecutionException: dispatch.StatusCode: Unexpected response status: 301 (NettyResponseFuture.java:172)
[error] org.asynchttpclient.netty.NettyResponseFuture.get(NettyResponseFuture.java:172)
[error] dispatch.HttpExecutor.$anonfun$apply$3(execution.scala:123) 

Исключение 2:

[error]   ! access URL
[error]    java.util.concurrent.ExecutionException: java.net.ConnectException: General SSLEngine problem (NettyResponseFuture.java:172)
[error] org.asynchttpclient.netty.NettyResponseFuture.get(NettyResponseFuture.java:172)
[error] dispatch.HttpExecutor.$anonfun$apply$3(execution.scala:123)

Кроме того, все три URL-адреса работают должным образом, когда я обращаюсь к ним через веб-браузер Safari. Почему первый URL работает нормально при отправке, а последние два - нет?

 Bruno19 сент. 2017 г., 15:32
Я нашел этот связанный вопрос (stackoverflow.com/questions/19288803/...). Но как мне сделать нечто подобное с отправкой?
 Edmondo198424 дек. 2018 г., 12:41
Было ли изменение между отправкой 0,11 и 0,13?
 Bruno19 сент. 2017 г., 15:08
Я понимаю, почему я получаю статус 301 для "s2". Alpha Vantage хочет, чтобы я использовал «https» вместо «http». Я все еще немного удивлен тем, что Safari, похоже, автоматически восстанавливается с 301 и успешно загружает данные, тогда как Dispatch нет. Но главная проблема - это исключение 2 для «s3», когда я использую «https».

Ответы на вопрос(2)

Решение Вопроса

как в связанном примере Play, попробуйте следующее:

Http.withConfiguration(config => config.setAcceptAnyCertificate(true))(url(address).GET OK as.String)

который проверяет сертификаты, я нашел здесь пример кода:https://kevinlocke.name/bits/2012/10/03/ssl-certificate-verification-in-dispatch-and-asynchttpclient/.

Ваш ответ на вопрос