2013-07-23 42 views
0

從包括Indiegogo現在我獲取網址作爲使用基本GET請求模板側項目的一部分,找到[這裏] [1]。然後,我用Golang HTTP GET請求休息,但不是所有的URL

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

與相應的錯誤處理,其中需要翻譯字節的數據轉換爲字符串

它工作正常,在得到反覆的嘗試和不同長度(至少一樣大,以前的一些其他網址網址和一些比下一個更長)。

奇怪的是,當我試圖把它打破了,並拋出的

panic: runtime error: index out of range 

並退出運行時錯誤具有2的狀態我很好奇,是什麼問題可能是。

我知道這是不是包括Indiegogo生氣了我一分鐘一次的請求和切割我的連接,因爲我可以continiously 20分鐘,在沒有問題的要求。給它一點停機時間,它仍然完全靠

感謝您的幫助

編輯突破,它看起來好像它是HTML的格式不正確的位在一些與環路我跑混亂的網頁基於設法破解的內容只在某些url上運行。感謝您的幫助

[1]:

+0

可以確保「responseText的」不是零拼接?嘗試打印其內容。 – matthewbauer

+0

好吧,在打印responseText時,我得到了一個字節數組,正如預期的那樣,它看起來好像轉換爲字符串是破壞它。 – Everlag

+0

有一個類似的問題,而回來。 http://stackoverflow.com/questions/14230145/what-is-the-best-way-to-convert-byte-array-to-string – matthewbauer

回答

0

從URL獲取和身體轉換成圍棋string類型時沒有錯誤。例如,

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 

你沒有爲我們提供了一個很小的代碼片段,編譯,運行,並在你所描述的方式失敗。這讓我們都猜測。