Это странный ответ, так как предполагает, что эта строка:
request.Header.Set("Content-Type", "application/json")
Не удалось добавить значение в срез ключа.В современном го этого не происходит, например,
data := []byte(`{"a":1}`)
req, err := http.NewRequest("POST", "", bytes.NewBuffer(data))
if err != nil {
fmt.Println(err)
return
}
req.Header.Set("Foo", "Bar")
fmt.Printf("%v\n", req.Header)
Отпечатки
map[Foo:[Bar]]
См. игровая площадка .
Используете ли вы более старую версиюИди, что не соответствует этому поведению?(Я нахожусь на 1.11.2 локально.)
Пять предложений:
(1) Обработайте возвращаемое значение err
из NewRequest, чтобы убедиться, что там нет проблем (см. Пример выше).
(2) Напечатайте значение запроса Header
перед отправкой, чтобы убедиться, что оно выглядит именно в этой точке (см. Пример выше).
(3) Попробуйте метод Add
для заголовка Content-Type вместо Set
в качестве альтернативы:
func (h Header) Add(key, value string)
(4) Убедитесь, что вы не проходите через прокси, который удаляет значения заголовка.
(5) Убедитесь, что «application / json» является приемлемым типом контента для конечной точки, к которой вы обращаетесь, поскольку пустое значение в ответе об ошибке само по себе может быть ошибочным.
Удачи!