Google Contacts API中使用的Google数据语法的正确内容类型是什么?



我需要使用Golang在G Suite域中阅读和更新Google共享联系人。由于此API没有现有的GO客户端库,因此我必须在HTTP级别与API进行交互。目前,我坚持发送正确的Content-Type标头。

自https://developers.google.com/admin-sdk/domain-shared-contacts#creating上的文档以来,使用application/atom+xml自然是我尝试的。但是,我收到的响应是一个406 Not Acceptable,其中包含"无可接受类型"的主体消息。省略Content-Type返回400"响应不包含内容类型"。使用text/xml返回具有" content-type text/xml的415"不是有效的输入类型。

    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

我要发送的身体是文档中的示例(上面的链接(,但此时似乎并不重要,因为空的身体给出了相同的响应。

发布问题后仅一分钟就发现了问题。果然,这不是Content-Type标头,而是Accept标头。删除解决问题的问题。具体来说,Google抱怨我要求application/json作为响应类型。Accept标头显然甚至不需要。

相关内容

最新更新