Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/http/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Scala 当网站未响应HTTP错误代码时,该怎么办?_Scala_Http - Fatal编程技术网

Scala 当网站未响应HTTP错误代码时,该怎么办?

Scala 当网站未响应HTTP错误代码时,该怎么办?,scala,http,Scala,Http,我正在尝试连接到一个网站ABC.com(HTTP API端点)。然而,由于网站的一些问题,我没有得到回应 val httpclient: CloseableHttpClient = HttpClients.custom() .setSSLSocketFactory(sslsf) .build() val getSlowQueryRequest: HttpGet = new HttpGet(mySQLHost + "cgi-bin/" + slowQueryLink) val

我正在尝试连接到一个网站ABC.com(HTTP API端点)。然而,由于网站的一些问题,我没有得到回应

  val httpclient: CloseableHttpClient = HttpClients.custom()
  .setSSLSocketFactory(sslsf)
  .build()
  val getSlowQueryRequest: HttpGet = new HttpGet(mySQLHost + "cgi-bin/" + slowQueryLink)
  val slowQueryResponse: CloseableHttpResponse = httpclient.execute(getSlowQueryRequest)
在httpclient.execute()之后,程序被卡住。我试图手动打开该网站,但即使如此,它也没有给出任何回应。 正因为如此,程序的其余部分都挂断了!有没有什么方法可以让我设置一些计时器等待一段时间,如果我没有得到响应,跳过测试后继续

编辑:

也可能是因为使用了SSL?CloseableHttpClient是否不提供任何默认超时值


提前谢谢

您可以根据自己的请求使用HttpAsyncClient

因此,您的电话将是:

 val futureResponse: Future<HttpResponse> = httpclient.execute(request1, null);
val-futuresponse:Future=httpclient.execute(request1,null);
您可以在将来使用onComplete进行进一步处理

另一种选择是使用一些Scala本机库,如

导入分派。\默认值_
val svc=url(“http://api.hostip.info/country.php")
val country=Http(svc OK as.String)
val长度=对于(c

这对我来说很好!

CloseableHttpClient是否提供了一种更直接的方法来设置超时而不涉及未来,因为我对这个概念不太熟悉?我想,CloseableHttpRequest中有一个默认超时,但您看到了它对您的系统的影响。您将有更小的中断,更小的超时,但问题是他们将留下来。
import dispatch._, Defaults._
val svc = url("http://api.hostip.info/country.php")
val country = Http(svc OK as.String)
val length = for (c <- country) yield c.length
val requestConfig: RequestConfig = RequestConfig.custom()
      .setSocketTimeout(30 * 1000) //30 sec timeout
      .setConnectTimeout(30 * 1000)
      .build()
    val sslsf: SSLConnectionSocketFactory = Utility.getTrustAllSSLFactory
    val httpclient: CloseableHttpClient = HttpClients.custom()
      .setDefaultRequestConfig(requestConfig)
      .setSSLSocketFactory(sslsf)
      .build()