当前位置: 首页 > 面试题库 >

在Go中以字符串形式访问HTTP响应

凌修伟
2023-03-14
问题内容

我想解析Web请求的响应,但是在以字符串形式访问它时遇到了麻烦。

func main() {
    resp, err := http.Get("http://google.hu/")
    if err != nil {
        // handle error
    }
    defer resp.Body.Close()
    body, err := ioutil.ReadAll(resp.Body)

    ioutil.WriteFile("dump", body, 0600)

    for i:= 0; i < len(body); i++ {
        fmt.Println( body[i] ) // This logs uint8 and prints numbers
    }

    fmt.Println( reflect.TypeOf(body) )
    fmt.Println("done")
}

如何以字符串形式访问响应?ioutil.WriteFile将响应正确地写入文件。

我已经检查过包参考,但并没有真正的帮助。


问题答案:

bs := string(body) 应该足以给你一个字符串。

从那里,您可以将其用作常规字符串。

有点像这个线程:

var client http.Client
resp, err := client.Get(url)
if err != nil {
    log.Fatal(err)
}
defer resp.Body.Close()

if resp.StatusCode == http.StatusOK {
    bodyBytes, err := ioutil.ReadAll(resp.Body)
    if err != nil {
        log.Fatal(err)
    }
    bodyString := string(bodyBytes)
    log.Info(bodyString)
}

另请参阅GoByExample。

如下所述在zzn的答案中,这是一次转换
(请参阅spec)。

有些转换与强制转换相同,例如uint(myIntvar),只是重新解释了适当的位。

索尼娅补充说:

从字节片中制作字符串,肯定涉及在堆上分配字符串。不变性迫使这一点。
有时,您可以通过使用[]
byte进行尽可能多的工作,然后在最后创建一个字符串来进行优化。该bytes.Buffer类型通常很有用。



 类似资料:
  • 问题内容: 是否有内置方式或合理的标准软件包,可让您将标准UUID转换为短字符串,从而启用较短的URL? 即利用了较大范围的字符,例如输出较短的字符串。 我知道我们可以使用base64对字节进行编码,如下所示,但是我正在创建一个看起来像“单词”的字符串,即no 和: 问题答案: 甲通用唯一标识符(UUID)是一个128位的值,它是16个字节。对于人类可读的显示,许多系统使用规范格式,该规范格式使用

  • 问题内容: 我如何发送VitalGroupID和Temperature作为整数而不是String…。这是在我点击Submit按钮后形成的请求。 问题答案: 严格来说,json是无类型的,因此您不能将其作为整数发送,它必须是字符串。javascript对象不太严格,因此您拥有的对象将评估为javascript对象,但没有严格的json解析器将能够理解它。 最好的办法是使用parseInt在客户端转换

  • 问题内容: 我正在使用python 2.7,我想解析已经从文本文件中提取的字符串HTTP响应字段。最简单的方法是什么?我可以使用BaseHTTPServer解析请求,但无法为响应找到内容。 我的回复非常标准,并采用以下格式 提前致谢, 问题答案: 您可能会发现这很有用,请记住HTTPResponse并非旨在“由用户直接实例化”。 还要注意,响应字符串中的content- length标头可能不再有

  • 问题内容: 我在MySQL数据库中有一个表字段: 因此,我使用以下查询将其调用到我的页面: 然后,为了处理结果,我要做: 现在,如果我这样做: 我得到一个字符串。 这不是整数吗? 问题答案: 当您使用PHP从MySQL数据库中选择数据时,数据类型将始终转换为字符串。您可以使用以下代码将其转换回整数: 或使用功能:

  • 问题内容: 在Go中获取当前时间戳并将其转换为字符串的最佳方法是什么?我需要日期和时间。YYYYMMDDhhmmss格式。 问题答案: 使用功能和方法。 打印出来,或者至少在几分钟前完成。(我在东部夏令时。)在时间包中定义的常量中有几种预定义的时间格式。 如果您希望使用UTC而非本地时区,则可以使用。

  • 问题内容: 对于我的应用程序,字符串是否为人类可读的都没有关系。 问题答案: 将结构编码为字符串的一种流行方法是使用JSON。 您有某些限制,例如无法获取所有信息(例如,每个字段的特定类型),仅序列化导出的字段以及不处理递归值。但这是序列化数据的简单标准方法。 工作示例: 给出以下输出: https://play.golang.org/p/sx-xdSxAOG