gpt4 book ai didi

go - 发送八位字节流

转载 作者:IT王子 更新时间:2023-10-29 01:58:49 33 4
gpt4 key购买 nike

我有两个 go 程序——一个作为服务器守护进程运行,另一个手动执行。我希望能够从其他程序向服务器发送请求,通过 post 请求向服务器发送一些二进制数据。我该怎么做?

我知道我可以发送这样的字符串:

data := url.Values{}
data.Set("req", buf)
u, _ := url.ParseRequestURI(domain)
u.Path = path
urlStr := fmt.Sprintf("%v", u)
client := &http.Client{}
r, _ := http.NewRequest("POST", urlStr, bytes.NewBufferString(data.Encode()))
r.Header.Add("Authorization", "auth_token=\"XXXXXXX\"")
r.Header.Add("Content-Type", "application/x-www-form-urlencoded")
r.Header.Add("Content-Length", strconv.Itoa(len(data.Encode())))
resp, _ := client.Do(r)
return resp.Status

但我想发送一个 octet-stream,然后我可以从 ioutil.ReadAll(r.Body) 读取它。

最佳答案

下面展示了如何将请求体中的数据发送到服务器,并在服务器端读取。客户端部分如下:

c := http.Client{}
data := []byte("This is a content that will be sent in the body")
r, err := http.NewRequest("POST", "http://localhost:8080", bytes.NewBuffer(data))
// You should never ignore the error returned by a call.
if err != nil {
panic(err)
}
c.Do(r)

在你的 http.Handler 函数中:

d, err := ioutil.ReadAll(r.Body)
if err != nil {
http.Error(w, err.Error(), http.StatusBadRequest)
}

fmt.Println("Request content : ", string(d))

这是最简单的方法。

关于go - 发送八位字节流,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37462349/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com