Go基礎編程實踐(九)—— 網絡編程

下載網頁

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)
}
相關文章
相關標籤/搜索