例如,如果我拨打电话:
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'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)
除了重写std lib代码外,你有解决这个问题的方法吗?
自2013年以来,https://developer.linkedin.com/forum/edit-i-dont-way-uris-look
面临同样问题答案 0 :(得分:1)
在创建请求后将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文档介绍了如何执行此操作。