我们有一个可以从大华相机中获取快照/图像的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
}
字符串
1条答案
按热度按时间uajslkp61#
这是我的误解,客户端.Get(uri)调用被阻止。@kotix的以下评论让我重新思考代码。在客户端.Get(uri)下面添加打印后,确认执行继续。
好的,那么从resp.Body中阅读数据并检查resp字段而不是// Perform next steps注解有什么问题呢?
下面是在事件到达时打印事件的完整代码。
字符串