Мне нужно прочитать и обновить общие контакты Google в домене G Suite с помощью Golang.Поскольку для этого API не существует клиентской библиотеки Go, мне приходится взаимодействовать с API на уровне http.В настоящее время я застрял при отправке правильного заголовка Content-Type
.
Так как в документации по https://developers.google.com/admin-sdk/domain-shared-contacts#Creating говорится, что используется application/atom+xml
, это, естественно, я и пытался.Тем не менее, я получаю ответ 406 Not Acceptable
с сообщением «Нет приемлемого типа».Пропуск Content-Type
возвращает 400 «Ответ не содержит тип содержимого».Использование text/xml
возвращает 415 с «Content-Type text / xml не является допустимым типом ввода».
req, err := http.NewRequest("POST", href, bytes.NewBuffer([]byte(body)))
if err != nil {
return "", err
}
req.Header.Set("GData-Version", "3.0")
req.Header.Set("Accept", "application/json")
req.Header.Set("User-Agent", "personnel-sync")
req.Header.Set("Content-Type", "text/xml")
resp, err := g.Client.Do(req)
if err != nil {
return "", err
}
defer resp.Body.Close()
bodyBytes, err := ioutil.ReadAll(resp.Body)
if err != nil {
log.Fatal(err)
}
bodyString := string(bodyBytes)
log.Println(bodyString)
log.Println(resp.Status)
return bodyString, nil
Тело, которое я отправляю, является примером в документации (ссылка выше), но онов данный момент не имеет значения, потому что пустое тело дает такой же ответ.