如何在Go中创建自定义http客户端?

时间:2016-05-21 15:26:54

标签: go request client

我想创建一个自定义http客户端,以便尽可能多次重复使用它。 但是,我认为Go已经抽象了代码背后发生的一些过程。 我知道要获得一个get请求,必须创建一个客户端。

客户端在哪里创建,如何自定义或替换为自己的客户端?

package main

import (
    "fmt"
    "github.com/njasm/gosoundcloud"
)

 s, err = gosoundcloud.NewSoundcloudApi("Client_Id", "Client_Secret", nil)


func main() {
    if err = s.PasswordCredentialsToken("email@example.com", "password"); err != nil {
    fmt.Println(err)
    os.Exit(1)
}
    member, err := s.GetUser(uint64(1))
    if err != nil {
               panic(err)
     }
    fmt.Println(member.Followers)
}

以下是soundcloud包装器的参考:

func NewSoundcloudApi(c string, cs string, callback *string) (*SoundcloudApi, error)

func (s *SoundcloudApi) PasswordCredentialsToken(u string, p string) error

func (s *SoundcloudApi) GetUser(id uint64) (*User, error)

1 个答案:

答案 0 :(得分:3)

使用Golang,您可以轻松创建客户端并将其用于请求:

client := &http.Client{
    CheckRedirect: redirectPolicyFunc,
}

resp, err := client.Get("http://example.com")

See the http documentation

但是在您的情况下,根据您使用的gosoundcloud软件包,http:Client会在调用时创建:

s.PasswordCredentialsToken("email@example.com", "password");

创建的客户端嵌入到" SoundcloudApi" struct(代码中的" s"),是一个私有字段。因此,您无法访问它。

无论如何,它似乎随时都会被使用" s"做某事(例如,当调用s.User时),所以它似乎做你要求的。