go-curl을 사용하는 것처럼 net/http GET 요청에 대한 읽기 콜백을 설정하는 방법은 무엇입니까?

WBOY
풀어 주다: 2024-02-11 09:24:08
앞으로
369명이 탐색했습니다.

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

PHP 편집기 Xigua는 go-curl과 유사한 기능을 달성하기 위해 net/http GET 요청에 대한 읽기 콜백을 설정하는 방법을 소개합니다. net/http 라이브러리를 사용하여 GET 요청을 시작할 때 http.Client 및 http.Request 구조의 관련 메서드를 사용하여 읽기 콜백 함수를 설정할 수 있습니다. io.Reader 인터페이스를 구현하는 사용자 정의 구조에 http.Response.Body 값을 설정하면 응답 내용을 읽는 동안 콜백 작업을 수행할 수 있습니다. 이러한 방식으로 우리는 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
}
로그인 후 복사

Workaround

client.Get(uri) 호출이 차단된 것은 저의 착각이었습니다. @kotix의 다음 댓글은 내 코드를 다시 생각하게 만들었습니다. client.Get(uri) 아래에 인쇄를 추가한 후 실행을 계속하려면 확인하세요.

이벤트가 도착했을 때 이를 인쇄하는 완전한 코드입니다.

으아아아

위 내용은 go-curl을 사용하는 것처럼 net/http GET 요청에 대한 읽기 콜백을 설정하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:stackoverflow.com
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿