比如要请求一个 域名 A.COM ,希望DNS指定解析到IP 1.1.1.1,如何设置http.Client呢?
*不能本地改HOST那种方式
研究一下go解析DNS的接口,重新实现连接服务器的方法,在里面做你这个特殊判断吧,参考下面代码就行。
```go
package main
import (
"context"
"net"
"net/http"
)
func init() {
net.DefaultResolver = &net.Resolver{
Dial: func(ctx context.Context, network, address string) (net.Conn, error) {
if address == "a.com" {
address = "1.1.1.1"
}
var d net.Dialer
return d.DialContext(ctx, network, address)
},
}
}
func main() {
http.Get("https://a.com") // 使用全局DNS解析的连接
c := &http.Client{
Transport: &http.Transport{
DialContext: func(ctx context.Context, network, addr string) (net.Conn, error) {
if addr == "a.com" {
addr = "1.1.1.1" // 自定义当前http.Client的连接
}
var d net.Dialer
return d.DialContext(ctx, network, addr)
},
},
}
c.Get("https://a.com")
}
```
#5
更多评论
1楼 <a href="/user/mingliangge" title="@mingliangge">@mingliangge</a> 大哥,实际情况需求就是这样,对方提供个域名,访问的时候请求方需指定对应IP,这些都是内部对接接口,不对外所以没有解析,银行内部接口都是这些玩意。
#2