有人知道如何解决此错误吗?
我使用Golang将数据插入Elasticsearch,但是由于该错误,似乎没有数据插入。
{“错误”:“不支持Content-Type标头[]”,“状态”:406}
我已经设置了内容类型。请注意,我使用elasticsearch 6.4.3
request, err := http.NewRequest("POST", urlSearch, bytes.NewBuffer(query))
request.Close = true
request.Header.Set("Content-Type", "application/json")
最后但并非最不重要的一点是,我使用elastigo软件包向elasticsearch发出请求。
答案 0 :(得分:0)
这是一个奇怪的回答,因为它暗示了这一行:
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]]
请参见go playground。
您是否正在使用与该行为不匹配的旧版Go? (我在本地使用1.11.2。)
五个建议:
(1)处理来自NewRequest的err
返回值,以确认那里没有问题(请参见上面的示例)。
(2)在发送之前打印请求Header
的值,以确认它在那时正确(请参见上面的示例)。
(3)尝试使用the Add
method作为Content-Type标头,而不要使用Set
作为替代:
func (h Header) Add(key, value string)
(4)确认您没有通过剥离标题值的代理。
(5)验证“ application / json”是否是您要命中的端点的可接受的内容类型,因为错误响应中的空值本身可能是错误的。
祝你好运!