为了账号安全,请及时绑定邮箱和手机立即绑定

从文件中读取 HTTP 标头的最有效方法?

从文件中读取 HTTP 标头的最有效方法?

Go
qq_笑_17 2023-05-22 17:45:02
我正在寻找一种有效的方法来从文本文件中读取 HTTP 标头,以便稍后使用 HTTP 请求发送。考虑以下代码(目前包含基本的 net/http 请求功能):func MakeRequest(target string, method string) {client := &http.Client{}req, _ := http.NewRequest(method, target, nil)//Headers manually..req.Header.Add("If-None-Match", `some value`)response, _ := client.Do(req)body, _ := ioutil.ReadAll(response.Body)fmt.Println(string(body))}我开始像这样使用 ioutil.ReadFile:func main() {data, _ := ioutil.ReadFile("/opt/tests/req.txt")fmt.Print(string(data))}但是拿这个文本,用一些指示符(比如“:”)分割它,然后将信息放在每个标题的 req.Header.Add("var1", "var2") 中似乎是一个过度杀戮。问题:有什么更好的方法可以从文本文件中发送带有标头的 HTTP 请求?
查看完整描述

2 回答

?
拉风的咖菲猫

TA贡献1995条经验 获得超2个赞

net/http有一个方法ReadRequest,它可以Request从一个bufio.Reader. 假设您的文件包含一个真正的 HTTP 请求(而不是仅由带有 的行组成的请求部分key: value),您需要做的就是bufio.Reader从文件创建一个新的,即像这样(省略错误处理):

rdr,_ := os.Open("req.txt")

req,_ := http.ReadRequest(bufio.NewReader(rdr))

fmt.Printf("%+v\n", req)


查看完整回答
反对 回复 2023-05-22
?
猛跑小猪

TA贡献1858条经验 获得超8个赞

如果您只想定义一些标头,另一种选择是在 Json 文件中定义标头并应用以下代码(不包括文件读取):


var jsonMap map[string]string

err = json.Unmarshal(jsonBytesFromFile, &jsonMap)

if err != nil {

    log.Fatal("unable to parse json: ", err)

}


for k, v := range jsonMap {

    log.Printf("setting Header : %s : %s", k, v)

    responseWriter.Header().Add(k, v) // you may prefer Set()

}

json 看起来像这样:


    "Content-type": "text/plain",

    "Cache-Control": "only-if-cached"

}


查看完整回答
反对 回复 2023-05-22
  • 2 回答
  • 0 关注
  • 135 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信