当前位置:  开发笔记 > 编程语言 > 正文

在Go中获取请求(获取几行)

如何解决《在Go中获取请求(获取几行)》经验,为你挑选了1个好方法。

我需要在go lang中只获得a )请求的前几行.http.Get(是否有任何方法可以做到.我不需要整个响应.我需要匹配一个只在前几行中存在的模式.获取整个响应并获得正则表达式使得它非常慢,因为响应中的字符数非常大.这是最快的方法.目前我在做

http.Get() 

//返回一个响应

ioutil.readAll(response of the above url)

//返回一个字节数组

 MyFunction(search for reg exp in the byte array)

有没有任何方法可以获取几行或避免获取整个响应并匹配模式.



1> JimB..:

不要使用ReadAll,只需读取一个你知道足够大的块来捕获你想要的部分请求

// response must be in the first 2048 bytes
buf := make([]byte, 2048)
n, err := resp.Body.Read(buf)
MyFunction(buf[:n])

或通过 io.LimitedReader

buf, err := ioutil.ReadAll(io.LimitReader(resp.Body, 2048))

或者,如果你真的需要通过线读,a bufio.Scanner

scanner := bufio.NewScanner(resp.Body)
for i := 0; i < fewLines && scanner.Scan(); i++ {
    MyFunction(scanner.Bytes())
}

但是请注意,如果你不读完响应主体,它会阻止你的客户重用的连接,如果有大量的输入数据的服务器可能不喜欢你经常早关闭连接.

推荐阅读
无名有名我无名_593
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有