我有从以下地方获取令牌的功能:
func getToken(client *http.Client) (string, error) {
fmt.Printf("Starting with token...\n")
// Token service URL
apiUrl := "http://url.to.obtain.token"
// Data to send when getting a token
data := url.Values{}
data.Set("username", "my-username")
data.Set("password", "my-password")
// Create a POST request
request, _ := http.NewRequest("POST", apiUrl, bytes.NewBufferString(data.Encode()))
// Add needed headers
request.Header.Add("Content-Type", "application/x-www-form-urlencoded")
request.Header.Add("Content-Length", strconv.Itoa(len(data.Encode())))
// Issue the POST
resp, err := client.Do(request)
if err != nil {
return "", err
} else {
// Getting the token and transform it to string
htmlData, _ := ioutil.ReadAll(resp.Body)
resp.Body.Close()
body := string(htmlData)
return body, nil
}
}
然后我有我的主要功能:
func main() {
client := &http.Client{}
token, _ := getToken(client)
apiUrl := "http://url.that.actually.uses.token"
requ, _ := http.NewRequest("GET", apiUrl, nil)
requ.Header.Add("Authorization", token) // (lineX - for later reference)
resp, err := client.Do(requ)
if err != nil {
log.Fatal(err)
} else {
htmlData, _ := ioutil.ReadAll(resp.Body)
resp.Body.Close()
body := string(htmlData)
fmt.Printf(body)
}
}
在lineX
中,我收到运行时错误,如:
panic: runtime error: invalid memory address or nil pointer dereference
我尝试了各种各样的事情(甚至重复使用跨职能的客户端)。
有什么想法吗?
答案 0 :(得分:0)
网址格式错误,因此NewRequest
无法正确解析。始终使用错误处理!