http - 为 golang 请求设置标志

标签 http go curl request

我有一个 CURL 字符串 curl --unix-socket/var/run/docker.sock http://localhost/containers/json 它有一个标志 --unix-sock 如何在 golang 中将此标志设置为 http 请求?

最佳答案

使用DialContext field of http.Transport连接到 unix 套接字(为简洁起见,省略了大多数错误处理):

package main

import (
    "context"
    "fmt"
    "log"
    "net"
    "net/http"
    "net/http/httputil"
)

func main() {
    c := &http.Client{
        Transport: &http.Transport{
            DialContext: func(ctx context.Context, network, addr string) (net.Conn, error) {
                return (&net.Dialer{}).DialContext(ctx, "unix", "/var/run/docker.sock")
            },
        },
    }

    req, _ := http.NewRequest("GET", "http://localhost/containers/json", nil)

    res, err := c.Do(req)
    if err != nil {
        log.Fatal(err)
    }

    b, _ := httputil.DumpResponse(res, true)
    fmt.Println(string(b))
}

关于http - 为 golang 请求设置标志,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59664696/

相关文章:

go - 导入本地源文件以兼容 Travis CI

go - 在 if..else 语句中未声明变量

javascript - 从 javascript 调用多次时,PHP cURL 返回旧数据

html - REST,超文本和非浏览器客户端

json - 在本地 IP 地址上使用来自 dart/flutter 的 http.get 时获取 statuscode = 400

google-app-engine - 清理 AppEngine BlobStore

json - 如何使用 curl 将 json 对象与数组一起放置

php - Paypal REST API,怎么办?

html - 现代网络浏览器可以并行下载哪些类型的网络资源?另外,什么不能并行下载?

cocoa-touch - 从 cocoa http获取请求中提取数据