1

是否有一种方法或特殊curl选项可以在使用时识别无连接情况curlGetResponse_

例如,有一些curl-命令:

withCurlDo $ respBody <$> (curlGetResponse_ "google.com" [CurlFailOnError True] ∷ IO (CurlResponse_ [(String, String)] ByteString))

如果有到主机的连接,它会返回一些IO ByteString.

但如果没有任何连接,则需要 40 秒并返回空字符串。

Left当连接丢失且主机无法访问时,有没有办法抛出异常或某些值?

4

1 回答 1

2

您可以使用ConnectTimeout选项设置适当的超时,然后检查响应代码是否存在超时错误:

μ> withCurlDo $ respCurlCode <$> (curlGetResponse_ "google.com" [CurlConnectTimeout 1] ∷ IO (CurlResponse_ [(String, String)] String))
CurlOK
μ> withCurlDo $ respCurlCode <$> (curlGetResponse_ "2.2.2.2" [CurlConnectTimeout 1] ∷ IO (CurlResponse_ [(String, String)] String))
CurlOperationTimeout
于 2012-06-14T08:35:37.557 回答