下載網頁
package main
import (
"io/ioutil"
"net/http"
"fmt"
)
func main() {
url := "http://www.cnblogs.com/GaiheiluKamei"
response, err := http.Get(url)
if err != nil {
panic(err)
}
defer response.Body.Close()
html, err2 := ioutil.ReadAll(response.Body)
if err2 != nil {
panic(err2)
}
// ReadAll返回[]byte
fmt.Println(string(html))
}
// 這種直接下載下來的網頁用處不大,旨在提供思路
下載文件
package main
import (
"net/http"
"io"
"os"
"fmt"
)
func main() {
// 獲取文件
imageUrl := "http://pic.uzzf.com/up/2015-7/20157816026.jpg"
response, err := http.Get(imageUrl)
if err != nil {
panic(err)
}
defer response.Body.Close()
// 建立保存位置
file, err2 := os.Create("pic.jpg")
if err2 != nil {
panic(err2)
}
// 保存文件
_, err3 := io.Copy(file, response.Body)
if err3 != nil {
panic(err3)
}
file.Close()
fmt.Println("Image downloading is successful.")
}
建立Web服務器
// 運行程序,打開瀏覽器,根據輸入的查詢參數將返回不一樣的值
// 例如:"http://localhost:8000/?planet=World" 將在頁面顯示"Hello, World"
package main
import (
"net/http"
"log"
)
func sayHello(w http.ResponseWriter, r *http.Request) {
// Query方法解析RawQuery字段並返回其表示的Values類型鍵值對。
planet := r.URL.Query().Get("planet")
w.Write([]byte("Hello, " + planet))
}
func main() {
http.HandleFunc("/", sayHello)
log.Fatalln(http.ListenAndServe(":8000", nil))
}
建立文件服務器
// 在本程序同目錄下建立images文件夾,放入一些文件
// 打開瀏覽器訪問"http://localhost:5050"將會看到文件
package main
import "net/http"
func main() {
http.Handle("/", http.FileServer(http.Dir("./images")))
http.ListenAndServe(":5050", nil)
}