以后端為目標開始學(xué)習(xí) golang。我正在嘗試在某個網(wǎng)址獲取網(wǎng)頁的正文。這是代碼的一部分。func AddForm(url string) string { if url == "" { data := ReadByIoutil("file.txt") // the file contains several urls array := ParseData(data) // parsing data in T "Object" => Object.url string url = "https://" url += array[rand.Intn(len(array))].url // choose randomly 1 among urls log.Print(url) } resp, err := http.Get(url) //get content from url check(err) defer resp.Body.Close() body, err := ioutil.ReadAll(resp.Body) content := string(body) WriteByOs("index.html", content) //save to another file (optionaly) return content}// I practically don't understand this block, but I copied from another place but it works as I wantedfunc handler(w http.ResponseWriter, r *http.Request) { url := r.FormValue("url") if url == "" { w.Header().Set("Content-Type", "text/html; charset=utf-8") url = "" //url = "habr.com" fmt.Fprint(w, AddForm(url)) return }}我檢查結(jié)構(gòu)。一切都很好 => Object.url 看起來像“example.com”。結(jié)構(gòu)中的每個 url 都打開得很好,例如 google.com、habr.com。我也注意到例如“[PREFIX].cppreference.com” 大喊錯誤。但對我來說很清楚,但仍然不明白如何解決這個問題。主要問題是我遇到錯誤并且沒有打開 url“stackoverflow.com”:2018/09/19 12:08:16 https://stackoverflow.com2018/09/19 12:08:16 http: panic serving [::1]:51813: parse https://stackoverflow.com: invalid character "\r" in host namegoroutine 19 [running]:net/http.(*conn).serve.func1(0xc00003c8c0) C:/Go/src/net/http/server.go:1746 +0xd7panic(0x665ae0, 0xc0002369f0) C:/Go/src/runtime/panic.go:513 +0x1c7main.check(...) C:/Users/dev/go/src/test/main.go:14main.AddForm(0xc000042800, 0x1b, 0x0, 0x0) C:/Users/dev/go/src/test/main.go:100 +0x2e6main.handler(0x6f1300, 0xc0001447e0, 0xc0000d8c00)這是什么?\r 重定向到本地語言分支?我是網(wǎng)絡(luò)技術(shù)的新手,所以仍然不知道服務(wù)器如何響應(yīng)以及對用戶隱藏但可以與機器一起使用的內(nèi)容。所以,評論問我file.txt。在這里(PS.解析器效果很好):google.com; yandex.ru; habr.com; xakep.ru; stackoverflow.com
1 回答

郎朗坤
TA貢獻1921條經(jīng)驗 獲得超9個贊
刪除 EOL 字符。您可能必須使用“\r\n”或“\r”
url += strings.TrimSuffix(array[rand.Intn(len(array))].url, "\r")
- 1 回答
- 0 關(guān)注
- 312 瀏覽
添加回答
舉報
0/150
提交
取消