LinkedIn Vector Asset API 不断返回 400 Bad Request

我有以下方法使用 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


呼如林
浏览 120回答 1
1回答

白衣非少年

更改Content-Type为application/octet-stream并将请求方法从更改PUT为POST有效,即使在他们的文档中另有说明
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go