golang の利点の 1 つは、強力なネットワーク機能です。ネットワーク通信では、https プロトコルをサポートするサーバーが増えているため、クライアントも https リクエストをサポートする必要があります。この記事では、golang を使用して https リクエストを実装する方法を紹介します。
まず、対応するパッケージをインポートする必要があります:
import ( "crypto/tls" "net/http" "time" )
その中で、crypto/tls パッケージは TLS の実装を提供します。および SSL プロトコル; net/http パッケージは http リクエストの実装を提供し、time パッケージはタイムアウトの設定に使用されます。
http リクエストを開始する前に、http クライアントを作成する必要があります。 http クライアントを作成するときは、RoundTripper インターフェイスを使用して TLS 構成を設定する必要があります。サンプル コードは次のとおりです:
func newHTTPSClient() *http.Client { tlsCfg := &tls.Config{ InsecureSkipVerify: true, } transport := &http.Transport{ TLSClientConfig: tlsCfg, Proxy: http.ProxyFromEnvironment, DialContext: (&net.Dialer{ Timeout: 30 * time.Second, KeepAlive: 30 * time.Second, DualStack: true, }).DialContext, MaxIdleConns: 100, IdleConnTimeout: 90 * time.Second, TLSHandshakeTimeout: 10 * time.Second, ExpectContinueTimeout: 1 * time.Second, } return &http.Client{ Timeout: time.Second * 30, Transport: transport, } }
上記のコードでは、InsecureSkipVerify を true に設定していることに注意してください。つまり、証明書の検証をスキップします。開発中に証明書を検証する必要がある場合は、この値を false に設定します。
http クライアントを作成した後、クライアントを使用して https リクエストを開始できます。サンプル コードは次のとおりです。
func sendHTTPSRequest() { client := newHTTPSClient() resp, err := client.Get("https://example.com") if err != nil { log.Fatal(err) } defer resp.Body.Close() body, err := ioutil.ReadAll(resp.Body) if err != nil { log.Fatal(err) } fmt.Println(string(body)) }
http.Get メソッドを使用して https リクエストを開始し、ioutil パッケージの ReadAll メソッドを通じて返された応答本文を読み取ります。
この記事では、golang を使用して https リクエストを実装する方法を紹介します。 https リクエストを実装するときは、crypto/tls パッケージによって提供される TLS および SSL プロトコル実装と、net/http パッケージによって提供される http リクエスト実装を使用する必要があります。同時に、リクエストの信頼性とセキュリティを確保するために、タイムアウトや TLS 構成などのパラメーターの設定に注意する必要があります。
以上がgolangを使用してhttpsリクエストを実装する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。