go - 使用 url 编码的 LinkedIn API 调用

标签 go linkedin

例如,如果我调用:

https://api.linkedin.com/v1/people/~:(id,first-name,last-name)

它应该可以正常工作,但是如果 URL 编码(并且应该是)像这样:

https://api.linkedin.com/v1/people/~:%28id,first-name,last-name%29

我收到此错误消息:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<error>
    <status>404</status>
    <timestamp>1423577265744</timestamp>
    <request-id>6B2UQSA25W</request-id>
    <error-code>0</error-code>
    <message>[invalid.property.name]. Couldn&#39;t find property with name {:%28id,first-name,last-name%29} in resource of type {Person}</message>
</error>

你如何应对?
目前我无法更改代码,因为我的语言(Golang btw)确实使用标准包非常正确地对其进行了编码。这是我的代码:

r, _ := http.NewRequest("GET", "https://api.linkedin.com/v1/people/~:(id,first-name,last-name)", nil)
r.Header.Set("Authorization", "Bearer "+respBody.AccessToken)
resp, err = http.DefaultClient.Do(r)

除了重写标准库代码之外,您是否有解决此问题的方法?

一些自 2013 年以来面临同样问题的人在这里 https://developer.linkedin.com/forum/edit-i-dont-way-uris-look

最佳答案

在创建请求后将 URL Opaque 字段设置为路径:

r, err := http.NewRequest("GET", "https://api.linkedin.com", nil)
if err != nil {
  // handle error
}
r.URL.Opaque = "/v1/people/~:(id,first-name,last-name)"
r.Header.Set("Authorization", "Bearer "+respBody.AccessToken)
resp, err = http.DefaultClient.Do(r)

URL type文档描述了如何执行此操作。

关于go - 使用 url 编码的 LinkedIn API 调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28433779/

相关文章:

go - 下划线(_)在 for 循环 Golang 中有什么作用?

forms - 使用 http.Client 创建一个损坏的表单

php - Linkedin API - 按关键字搜索帖子

LinkedIn API V2 - 如何获取用于组织的个人资料照片?

oauth-2.0 - LinkedIn 的 OAuth 错误 : "A confirm Email Address is Required to proceed"

docker cli swarm 包导入问题

unit-testing - GoLang Sarama ConsumerGroup模拟

go - 具有多个 UI 的工具的项目结构

PHP oAuth 从收到的 header 中删除位置

jquery - 实现 LinkedIn 的新自动填充功能 + 请求无法完成