1

curlが使用されているときに、接続されていない状況を認識する方法または特別なオプションはありcurlGetResponse_ますか?

たとえば、次のコマンドがありcurlます。

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

ホストへの接続がある場合は、 some を返します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 に答える