ホームページ > バックエンド開発 > Golang > go-curlを使用するようにnet/http GETリクエストの読み取りコールバックを設定するにはどうすればよいですか?

go-curlを使用するようにnet/http GETリクエストの読み取りコールバックを設定するにはどうすればよいですか?

WBOY
リリース: 2024-02-11 09:24:08
転載
392 人が閲覧しました

如何像使用 go-curl 一样为 net/http GET 请求设置读取回调?

php エディタ Xigua では、net/http GET リクエストの読み取りコールバックを設定して go-curl と同様の機能を実現する方法を紹介します。 net/http ライブラリを使用して GET リクエストを開始する場合、http.Client 構造体と http.Request 構造体の関連メソッドを使用して読み取りコールバック関数を設定できます。 http.Response.Body の値を io.Reader インターフェイスを実装するカスタム構造に設定することで、応答コンテンツを読み取りながらコールバック操作を実行できます。このようにして、HTTP リクエストの処理プロセスでより柔軟でカスタマイズされた操作を実現し、コードの保守性とスケーラビリティを向上させることができます。

質問の内容

Dahua カメラからスナップショット/画像を取得できる、動作する golang プログラムがあります。次の URI - http://192.168.x.x/cgi-bin/eventManager.cgi?action=attach&codes=[VideoMotion] の読み取りコールバック関数を追加することで、これを強化したいと考えています。この URI はカメラ側からソケットを開いたままにし、カメラはそれを通じてイベントを送信し続けます。

読み取りコールバックの登録をサポートしているため、go-curl を使用しようとしました。ただし、このパッケージは MIPS アーキテクチャをサポートしていません。したがって、使用することができません。アドバイスや助けがあれば助かります。これは、スナップショット取得のための実際のコードです。

package main

import (
    "fmt"
    "log"
    "net/http"

    "github.com/icholy/digest"
)

const (
    username = "xxxxx"
    password = "xxxxx"
    uri = "http://192.168.x.x/cgi-bin/snapshot.cgi"
)

func main() {
    client := &http.Client{
        Transport: &digest.Transport{
            Username: username,
            Password: password,
        },
    }

    resp, err := client.Get(uri)
    if err != nil {
        log.Fatal(err)
    }
    defer resp.Body.Close()

    if resp.StatusCode != http.StatusOK {
        log.Fatalf("Error: Status code %d", resp.StatusCode)
    } else {
        fmt.Println("Snapshot fetched")
    }

    // Perform next steps
}
ログイン後にコピー

回避策

client.Get(uri) 呼び出しがブロックされたというのは私の誤解でした。 @kotix による次のコメントにより、コードを再考するようになりました。 client.Get(uri) 以下に印刷を追加した後、実行を続行することを確認します。

これは、イベントが到着したときにそれを出力するための完全なコードです。

リーリー

以上がgo-curlを使用するようにnet/http GETリクエストの読み取りコールバックを設定するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:stackoverflow.com
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート