【发布时间】:2016-05-22 21:10:41
【问题描述】:
我想设置一个自定义的 http 客户端来同时获取多个 http 请求。 但是,我对 Golang 比较陌生,并且在更改客户端的结构和我想做的事情的可行性方面遇到了问题。
我想用我创建的那个来改变 s 的 Transport。
我的脚本的简化版本是:
package main
import (
"fmt"
"os"
"github.com/njasm/gosoundcloud"
)
func main() {
s, err := gosoundcloud.NewSoundcloudApi("client_id", "client_secret", nil)
if err != nil {
panic(err)
}
if err = s.PasswordCredentialsToken("user@mail.com", "password"); err!= nil {
fmt.Println(err)
os.Exit(1)
}
var userID uint64 = 1
Transport, ok := http.DefaultTransport.(*http.Transport)
if !ok {
fmt.Println("http.DefaultClient is not an http.Client")
os.Exit(1)
}
Transport.MaxIdleConnsPerHost = 250
//Here I would like to change s'Transport so that it handles 250 MaxIdleConns
member, err := s.GetUser(userID)
if err != nil {
fmt.Println(err)
os.Exit(1)
}
fmt.Println(member)
}
这里是 s 的结构体
type SoundcloudApi struct {
conf *oauth2.Config
httpClient *http.Client
response *http.Response
}
参考资料:
https://golang.org/pkg/net/http/#Client https://godoc.org/github.com/njasm/gosoundcloud#SoundcloudApi
【问题讨论】:
-
我会说这是一个功能请求,这里的任何答案都是纯粹的 hack。你应该提交issue。
标签: go struct switch-statement client