Почему произошла ошибка при попытке отправить запрос POST? - PullRequest
0 голосов
/ 12 апреля 2020

Я пытаюсь отправить запрос POST на мой веб-сервер, но при попытке получить тело ответа возникает ошибка. Также я попытался отправить запрос с почтальоном, и все работало нормально. Ответ от сервера JSON данных, которые дают некоторую информацию о загруженной картинке. Error

package main

import (
    "fmt"
    "bytes"
    "mime/multipart"
    "os"
    "path/filepath"
    "io"
    "net/http"
    "io/ioutil"
)

func main() {

    url := "localhost:6000/..."
    method := "POST"

    payload := &bytes.Buffer{}
    writer := multipart.NewWriter(payload)
    file, errFile1 := os.Open("/home/...")
    defer file.Close()
    part1, errFile1 := writer.CreateFormFile("Image",filepath.Base("/home/..."))
    _, errFile1 = io.Copy(part1, file)
    if errFile1 !=nil {    
    fmt.Println(errFile1)
    }
    err := writer.Close()
    if err != nil {
    fmt.Println(err)
    }


    client := &http.Client {
    }
    req, err := http.NewRequest(method, url, payload)

    if err != nil {
    fmt.Println(err)
    }
    req.Header.Set("Content-Type", writer.FormDataContentType())
    res, err := client.Do(req)
    defer res.Body.Close()
    body, err := ioutil.ReadAll(res.Body)
    fmt.Println(string(body))
}

1 Ответ

1 голос
/ 12 апреля 2020

Это ваша строка # 42-43, где возникает ошибка:

res, err := client.Do(req)
defer res.Body.Close()

Если client.Do() возвращает ошибку, res может быть nil, и поэтому res.Body.Close() - это среда выполнения пани c. Сначала вы должны проверить ошибку и приступить к закрытию тела только в том случае, если error равно nil:

res, err := client.Do(req)
if err != nil {
    // Handle error and return:
    return
}
defer res.Body.Close()

См. Связанный: Нужно ли закрывать объект ответа в случае ошибки происходит во время вызова http.Get (url)?

Также: Требуется ли resp.Body.Close (), если мне не нужен ответ?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...