登录
首页 >  Golang >  Go问答

限制在响应 HTTP GET 请求时读取的数据量

来源:Golang技术栈

时间:2023-04-13 10:23:39 220浏览 收藏

珍惜时间,勤奋学习!今天给大家带来《限制在响应 HTTP GET 请求时读取的数据量》,正文内容主要涉及到golang等等,如果你正在学习Golang,或者是对Golang有疑问,欢迎大家关注我!后面我会持续更新相关内容的,希望都能帮到正在学习的大家!

问题内容

我正在抓取 HTML 页面并设置了一个 HTTP 客户端,如下所示:

client := *http.Client{
        Transport: &http.Transport{
            Dial: (&net.Dialer{
                Timeout:   30 * time.Second,
                KeepAlive: 30 * time.Second,
            }).Dial,
            TLSHandshakeTimeout:   10 * time.Second,
            ResponseHeaderTimeout: 10 * time.Second,
        },
    }

现在,当我对多个 URL 发出 GET 请求时,我不想被提供大量数据的 URL 所困扰。

response, err := client.Get(page.Url)
checkErr(err)
body, err := ioutil.ReadAll(response.Body)
checkErr(err)
page.Body = string(body)

有没有办法限制 GET 请求从资源接受并停止的数据量(字节)?

正确答案

使用io.LimitedReader

LimitedReader 从 R 读取数据,但将返回的数据量限制为仅 N 个字节。

limitedReader := &io.LimitedReader{R: response.Body, N: limit}
body, err := ioutil.ReadAll(limitedReader)

要么

body, err := ioutil.ReadAll(io.LimitReader(response.Body, limit))    

本篇关于《限制在响应 HTTP GET 请求时读取的数据量》的介绍就到此结束啦,但是学无止境,想要了解学习更多关于Golang的相关知识,请关注golang学习网公众号!

声明:本文转载于:Golang技术栈 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>
评论列表