Scala 当网站未响应HTTP错误代码时,该怎么办?
我正在尝试连接到一个网站ABC.com(HTTP API端点)。然而,由于网站的一些问题,我没有得到回应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
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()