0

现在,我正在使用 [here][1] 找到的基本获取请求模板从 indiegogo 获取 url,作为辅助项目的一部分。然后我使用将字节数据转换为字符串

responseText, err:= ioutil.ReadAll(response.Body)
trueText:= string(responseText)

在需要时进行适当的错误处理

它适用于反复尝试获取和其他一些不同长度的 url(至少与前一个 url 一样大,比下一个长一些)。

奇怪的是,当我试图让它中断并抛出一个运行时错误

panic: runtime error: index out of range

并以状态 2 退出。我很好奇问题可能是什么。

我知道这不是 indiegogo 对我每分钟一次的请求感到生气并切断我的连接,因为我可以毫无问题地连续请求 20 分钟。给它一点停机时间,它仍然会完全中断

感谢您的帮助

编辑,它似乎是一些页面中的一个格式错误的 html,它与我正在运行的循环混淆,该循环基于在运行时中仅在一些 url 上设法中断 go 的内容。谢谢您的帮助

[1]:

4

1 回答 1

0

string从 url 获取并将 body 转换为 Go类型时没有错误。例如,

package main

import (
    "fmt"
    "io/ioutil"
    "log"
    "net/http"
)

func main() {
    url := "http://www.indiegogo.com/projects/culcharge-smallest-usb-charge-and-data-cable-for-iphone-and-android"
    res, err := http.Get(url)
    if err != nil {
        log.Fatal(err)
    }
    body, err := ioutil.ReadAll(res.Body)
    res.Body.Close()
    if err != nil {
        log.Fatal(err)
    }
    text := string(body)
    fmt.Println(len(body), len(text))
}

输出:

66363 66363

您没有向我们提供以您描述的方式编译、运行和失败的一小段代码。这让我们都在猜测。

于 2013-07-24T01:29:58.913 回答