golang 在使用 multipart/form-data 时挂起

我想向电报发出一个空的帖子请求。问题是如果我关闭多部分一次,它会永远挂起:


 func main() {

    var requestBody bytes.Buffer

    multiPartWriter := multipart.NewWriter(&requestBody)

    multiPartWriter.Close()      // closing once

    req, _ := http.NewRequest("POST", "https://api.telegram.org/bot<telegram token>/getme", &requestBody)

    req.Header.Set("Content-Type", multiPartWriter.FormDataContentType())

    client := &http.Client{}

    client.Do(req)

但是,如果我关闭多部分两次,它就可以工作。谁能解释为什么会这样?


去电报多部分数据电报机器人


撒科打诨
浏览 183回答 1
1回答

DIEA

我刚刚检查了 Telegram API。我想一般的问题是,你使用了一个未初始化的缓冲区。您不需要缓冲区,也不需要请求中的任何有效负载。您可以将 nil 作为请求数据传递。像这样:func main() {&nbsp; &nbsp; req, err := http.NewRequest("POST", "https://api.telegram.org/bot<token>/getme", nil)&nbsp; &nbsp; if err != nil {&nbsp; &nbsp; &nbsp; &nbsp; panic(err)&nbsp; &nbsp; }&nbsp; &nbsp; client := &http.Client{}&nbsp; &nbsp; resp, err := client.Do(req)&nbsp; &nbsp; if err != nil {&nbsp; &nbsp; &nbsp; &nbsp; panic(err)&nbsp; &nbsp; }&nbsp; &nbsp; result, err := ioutil.ReadAll(resp.Body)&nbsp; &nbsp; if err != nil {&nbsp; &nbsp; &nbsp; &nbsp; panic(err)&nbsp; &nbsp; }&nbsp; &nbsp; println(string(result))}我还建议您在此处查看文档,此文档可让您以交互方式试用 API,它还可以为每个请求生成代码。为了生成 Go 代码示例,您可以单击右上角的按钮并选择您的 Go。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go