0
我有以下代碼向URL發出請求並檢查錯誤。如何檢查錯誤是否在Go中發生握手超時
import "net/http"
response, err := http.Head("url")
如何檢查錯誤是否由於握手超時?我試過以下內容:
if err != nil {
tlsError, ok := err.(http.tlsHandshakeTimeoutError)
if ok {
// handle the error
}
}
但是我無法訪問http.tlsHandshakeTimeoutError
類型,因爲它是未導出的。我還有什麼可以檢查錯誤類型嗎?
這是Go作者非常愚蠢的設計選擇。鑑於其他類似的怪癖,我並不感到驚訝。 – Mikhail
其實這並不完全正確,因爲我需要在字符串中包含方法和url進行比較,所以答案應該是:'if err.Error()==「Head」+「net/http:TLS handshake tmieout 「{//處理錯誤}」' – Mikhail
你是對的這個錯誤是由Do方法包裝的我已經更新了我的答案,但無論如何,這個想法是相同的 - 只是字符串檢查 – Oleg