go - LinkedIn Vector Asset API 不断返回 400 Bad Request

标签 go linkedin linkedin-api

我有以下方法使用 registerUpload 请求提供的 URL 和标题将媒体“上传”到 LinkedIn。我一直在尝试各种不同的方法来尝试让它工作但没有成功。照原样,这将返回 400 Bad Request当我尝试上传单个图像时响应。在这种特殊情况下,文档似乎不是很有帮助。我在这里做错了什么?

func (li *LinkedIn) UploadMedia(URL string, Headers map[string]string, File string) (err error) {
    client := &http.Client{}
    file, err := os.Open(File)
    if err != nil {
        return
    }
    defer file.Close()
    fi, _ := file.Stat()

    request, err := http.NewRequest("PUT", URL, file)
    if err != nil {
        return
    }
    request.Header.Set("Authorization", "Bearer "+li.Token)
    request.Header.Set("X-Restli-Protocol-Version", "2.0.0")
    request.Header.Set("Accept", "*/*")
    if val, ok := Headers["media-type-family"]; ok && val == "STILLIMAGE" {
        request.Header.Set("Content-Type", "text/plain")
    }
    for i, v := range Headers {
        request.Header.Set(i, v)
    }
    request.ContentLength = fi.Size()
    request.TransferEncoding = []string{"identity"}
    response, err := client.Do(request)
    if err != nil {
        return
    }
    defer response.Body.Close()
    if response.StatusCode != 200 && response.StatusCode != 201 {
        log.Println(File)
        log.Println(request)
        for name, values := range response.Header {
            // Loop over all values for the name.
            fmt.Println(name, "-", values)
        }
        dump, _ := httputil.DumpRequestOut(request, false)
        log.Println(string(dump))
        log.Println(request.ContentLength)
        log.Println(response.StatusCode)
        log.Println(response)
        responseBody, _ := ioutil.ReadAll(response.Body)
        err = errors.New(string(responseBody))
    }
    return
}
已添加 Accept看到这个问题后的标题:Linkedin v2 vector asset upload error 400

最佳答案

更改 Content-Typeapplication/octet-stream并将请求方法从 PUT 更改为至POST即使在他们的文件中另有说明也有效

关于go - LinkedIn Vector Asset API 不断返回 400 Bad Request,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63855283/

相关文章:

Go Flush() 不起作用

javascript - Hopscotch.js,动态创建的模态目标不起作用

node.js - 如何在 NodeJS 中创建新的 Firebase Admin SDK 服务器以通过 LinkedIn 进行身份验证?

javascript - 尝试使用 Node.js Express 连接到 LinkedIn API

go - 当 main 退出时,goroutines 会运行 defer() 吗?

go - 路由方法在主包文件中未定义

Golang : redirect twice and cause http: multiple response. WriteHeader 调用

android - 链接的 android 集成中格式错误的哈希键

android - LinkedIn Android SDK 与消费者 key 和消费者 secret 混淆?

linkedin-api - LinkedIn r_liteprofile 不提供公共(public)网址和个人资料图片