drake900918 2017-12-19 03:56
浏览 226

正在获取流错误:流ID 1; 在容器中的Golang中使用Google Search API时发生PROTOCOL_ERROR

When using a Go program inside of a docker swarm service I get a 400 status and an error message stream ID 1; PROTOCOL_ERROR when I call a client.Get(url) ) I get a 200 and the results when I go run *.go. I use a "Bundle of CA Root Certificates" inside of the container from Mozilla. Any Help Appreciated. My code is below.

client := &http.Client{Timeout: 30 * time.Second, Transport: &http.Transport{
        DisableCompression: true,
        DisableKeepAlives:  true,
    }}

    r, err := client.Get(url)
    if err != nil {
        return err
    }
    defer r.Body.Close()
    bodyBytes, err := ioutil.ReadAll(r.Body)
    if err != nil {
        fmt.Println(url, err) // The Google Search url and err: stream error: stream ID 1; PROTOCOL_ERROR

        return err
    }
    fmt.Println(r.StatusCode, string(bodyBytes))

    return json.NewDecoder(r.Body).Decode(target)

My Dockerfile:

FROM scratch

ADD ca-certificates.crt /etc/ssl/certs/

ENV MODE=production

ADD main /
CMD ["/main"]

Edit: Output from Debug

mycontainer.1.jdl70gy26uds@moby    | 2017/12/19 12:50:16 http2: Transport creating client conn 0xc42030b340 to 172.217.2.234:443
mycontainer.1.jdl70gy26uds@moby    | 2017/12/19 12:50:16 http2: Framer 0xc4204862a0: wrote SETTINGS len=18, settings: ENABLE_PUSH=0, INITIAL_WINDOW_SIZE=4194304, MAX_HEADER_LIST_SIZE=10485760
mycontainer.1.jdl70gy26uds@moby    | 2017/12/19 12:50:16 http2: Framer 0xc4204862a0: wrote WINDOW_UPDATE len=4 (conn) incr=1073741824
mycontainer.1.jdl70gy26uds@moby    | 2017/12/19 12:50:16 http2: Transport encoding header ":authority" = "www.googleapis.com"
mycontainer.1.jdl70gy26uds@moby    | 2017/12/19 12:50:16 http2: Transport encoding header ":method" = "GET"
mycontainer.1.jdl70gy26uds@moby    | 2017/12/19 12:50:16 http2: Transport encoding header ":path" = "/customsearch/v1?key=hidingmykey&cx=hidingmycx&q=liquid+nitrogen&num=10&start=1"
mycontainer.1.jdl70gy26uds@moby    | 2017/12/19 12:50:16 http2: Transport encoding header ":scheme" = "https"
mycontainer.1.jdl70gy26uds@moby    | 2017/12/19 12:50:16 http2: Transport encoding header "user-agent" = "Go-http-client/2.0"
mycontainer.1.jdl70gy26uds@moby    | 2017/12/19 12:50:16 http2: Framer 0xc4204862a0: wrote HEADERS flags=END_STREAM|END_HEADERS stream=1 len=140
mycontainer.1.jdl70gy26uds@moby    | 2017/12/19 12:50:16 http2: Framer 0xc4204862a0: read SETTINGS len=18, settings: MAX_CONCURRENT_STREAMS=100, INITIAL_WINDOW_SIZE=1048576, MAX_HEADER_LIST_SIZE=16384
mycontainer.1.jdl70gy26uds@moby    | 2017/12/19 12:50:16 http2: Transport received SETTINGS len=18, settings: MAX_CONCURRENT_STREAMS=100, INITIAL_WINDOW_SIZE=1048576, MAX_HEADER_LIST_SIZE=16384
mycontainer.1.jdl70gy26uds@moby    | 2017/12/19 12:50:16 http2: Framer 0xc4204862a0: wrote SETTINGS flags=ACK len=0
mycontainer.1.jdl70gy26uds@moby    | 2017/12/19 12:50:16 http2: Framer 0xc4204862a0: read WINDOW_UPDATE len=4 (conn) incr=983041
mycontainer.1.jdl70gy26uds@moby    | 2017/12/19 12:50:16 http2: Transport received WINDOW_UPDATE len=4 (conn) incr=983041
mycontainer.1.jdl70gy26uds@moby    | 2017/12/19 12:50:16 http2: Framer 0xc4204862a0: read SETTINGS flags=ACK len=0
mycontainer.1.jdl70gy26uds@moby    | 2017/12/19 12:50:16 http2: Transport received SETTINGS flags=ACK len=0
mycontainer.1.jdl70gy26uds@moby    | 2017/12/19 12:50:16 http2: Framer 0xc4204862a0: read HEADERS flags=END_HEADERS stream=1 len=72
mycontainer.1.jdl70gy26uds@moby    | 2017/12/19 12:50:16 http2: decoded hpack field header field ":status" = "400"
mycontainer.1.jdl70gy26uds@moby    | 2017/12/19 12:50:16 http2: decoded hpack field header field "content-type" = "text/html; charset=UTF-8"
mycontainer.1.jdl70gy26uds@moby    | 2017/12/19 12:50:16 http2: decoded hpack field header field "referrer-policy" = "no-referrer"
mycontainer.1.jdl70gy26uds@moby    | 2017/12/19 12:50:16 http2: decoded hpack field header field "content-length" = "1555"
mycontainer.1.jdl70gy26uds@moby    | 2017/12/19 12:50:16 http2: decoded hpack field header field "date" = "Tue, 19 Dec 2017 12:50:17 GMT"
mycontainer.1.jdl70gy26uds@moby    | 2017/12/19 12:50:16 http2: Transport received HEADERS flags=END_HEADERS stream=1 len=72
mycontainer.1.jdl70gy26uds@moby    | 2017/12/19 12:50:16 http2: Framer 0xc4204862a0: read RST_STREAM stream=1 len=4 ErrCode=PROTOCOL_ERROR
mycontainer.1.jdl70gy26uds@moby    | 2017/12/19 12:50:16 http2: Transport received RST_STREAM stream=1 len=4 ErrCode=PROTOCOL_ERROR
mycontainer.1.jdl70gy26uds@moby    | 2017/12/19 12:50:16 http2: Framer 0xc4204862a0: wrote RST_STREAM stream=1 len=4 ErrCode=CANCEL
  • 写回答

0条回答 默认 最新

    报告相同问题?

    悬赏问题

    • ¥20 完全没有学习过GAN,看了CSDN的一篇文章,里面有代码但是完全不知道如何操作
    • ¥15 使用ue5插件narrative时如何切换关卡也保存叙事任务记录
    • ¥20 软件测试决策法疑问求解答
    • ¥15 win11 23H2删除推荐的项目,支持注册表等
    • ¥15 matlab 用yalmip搭建模型,cplex求解,线性化处理的方法
    • ¥15 qt6.6.3 基于百度云的语音识别 不会改
    • ¥15 关于#目标检测#的问题:大概就是类似后台自动检测某下架商品的库存,在他监测到该商品上架并且可以购买的瞬间点击立即购买下单
    • ¥15 神经网络怎么把隐含层变量融合到损失函数中?
    • ¥15 lingo18勾选global solver求解使用的算法
    • ¥15 全部备份安卓app数据包括密码,可以复制到另一手机上运行