php editor Strawberry が Go 言語で TCP 接続を介して HTTP リクエストを行う方法を紹介します。 Web 開発では、多くの場合、他のサーバーと通信してデータを取得したり、リクエストを送信したりする必要があります。 Go 言語は、TCP 接続を作成し、HTTP リクエストを送信するための関数を含む、豊富な標準ライブラリを提供します。これらのスキルを習得することで、他のサーバーとの通信を Go 言語で簡単に実装し、データの取得や送信を行うことができます。次に、この興味深いトピックについて詳しく見ていきましょう。
package main import ( "crypto/tls" "fmt" ) func main() { conf := &tls.Config{} conn, _ := tls.Dial("tcp", "www.google.com:443", conf) data := []byte("GET / HTTP1.1\r\nHost: www.google.com\r\n\r\n") conn.Write(data) buf := make([]byte, 5000) conn.Read(buf) fmt.Println(string(buf[:])) }
生の TCP 接続データを使用して http リクエストを実行しようとしましたが、400 bad request というエラー応答を受け取りました。何が問題ですか。
データにエラーがあります。
http1.1
は http/1.1
である必要があります。
他の人の役に立つことを願って、このスペルミスを発見した経緯を共有したいと思いました。
あまり詳しくない問題を解決したいとき、私が最初にやることは、それが機能するとどのようになるかを調べることです。 nc を使ったことがあるので、まずはそれを試してみます。
これは nc
マニュアル ページの例です:
そこで、まず host.example.com
を www.google.com
に置き換えました。 :
次に、
http/1.0 を
http/1.1 に置き換えます。まだ動作します!
host ヘッダーを追加します:
リーリー
###効率的!
次に、質問内の文字列をコピーします:
リーリー今回は
400 Bad Request を受け取りました。
これは大きな前進です!リクエストに問題がありました。 2 つのリクエストを比較することで、入力エラーを簡単に発見できます。
最後に、元のデモのタイプミスを修正し、デモを実行して問題が解決されたことを確認します。仕上げる!
###読んでくれてありがとう!以上がgoでtcp接続経由でhttpリクエストを行うの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。