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

从 golang 中的 get 请求获取状态码

从 golang 中的 get 请求获取状态码

Go
慕田峪7331174 2022-12-19 21:17:41
我正在尝试在 goland 中获取 http 状态代码。我也在传递授权令牌。到目前为止,这是我尝试过的:func StatusCode(PAGE string, AUTH string) (r string){    resp, err := http.NewRequest("GET", PAGE, nil)    if err != nil {        log.Fatal(err)    }    resp.Header.Set("Authorization", AUTH)    fmt.Println("HTTP Response Status:", resp.StatusCode, http.StatusText(resp.StatusCode))    r := resp.StatusCode + http.StatusText(resp.StatusCode)}基本上我想得到这个:r = "200 OK"orr= "400 Bad request"以前的代码是从resp.StatusCode和http.StatusText(resp.StatusCode)抱怨的
查看完整描述

1 回答

?
牧羊人nacy

TA贡献1862条经验 获得超7个赞

有两个问题。第一个是应用程序使用请求作为响应。 执行请求以获得响应。

第二个问题是resp.StatusCode + http.StatusText(resp.StatusCode)编译不通过,因为操作数类型不匹配。该值resp.StatusCode是一个int. 的值为http.StatusText(resp.StatusCode)string。Go 没有将数字隐式转换为字符串的功能,这会使它按照您期望的方式工作。

r := resp.Status如果您想要从服务器发送的状态字符串,请使用。

用于r := fmt.Sprintf("%d %s", resp.StatusCode, http.StatusText(resp.StatusCode))从服务器的状态代码和 Go 的状态字符串构造状态字符串。

这是代码:

func StatusCode(PAGE string, AUTH string) (r string) {

    // Setup the request.

    req, err := http.NewRequest("GET", PAGE, nil)

    if err != nil {

        log.Fatal(err)

    }

    req.Header.Set("Authorization", AUTH)


    // Execute the request.

    resp, err := http.DefaultClient.Do(req)

    if err != nil {

        return err.Error()

    }

    

    // Close response body as required.

    defer resp.Body.Close()


    fmt.Println("HTTP Response Status:", resp.StatusCode, http.StatusText(resp.StatusCode))


    return resp.Status

    // or fmt.Sprintf("%d %s", resp.StatusCode, http.StatusText(resp.StatusCode))

}


查看完整回答
反对 回复 2022-12-19
  • 1 回答
  • 0 关注
  • 273 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号