zoukankan      html  css  js  c++  java
  • [日常] go语言*-获取URL练习题

    1.主要使用net/http和io/ioutil包

    2.http.Get函数是创建HTTP请求的函数,resp这个结构体中,Body字段包括一个可读的服务器响应流

    3.ioutil.ReadAll函数从response中读取到全部内容,resp.Body.Close关闭resp的Body流

    4.用os.Exit函数来终止进程,并且返回一个status错误码

    5.使用Fprintf与表示任意类型默认格式值的动词%v,向标准错误流打印一条信息

    6.strings.HasPrefix(s, prefix string) bool,判断字符串s是否以prefix 开头

    练习 1.7: 函数调用io.Copy(dst, src)会从src中读取内容,并将读到的结果写入到dst中,使用这个函数替代掉例子中的ioutil.ReadAll来拷贝响应结构体到os.Stdout,避免申请一个缓冲区(例子中的b)来存储。记得处理io.Copy返回结果中的错误。

    练习 1.8: 修改fetch这个范例,如果输入的url参数没有 http:// 前缀的话,为这个url加上该前缀。你可能会用到strings.HasPrefix这个函数。

    练习 1.9: 修改fetch打印出HTTP协议的状态码,可以从resp.Status变量得到该状态码。

    fetch.go

    package main
    
    //导入io/ioutil和net/http包
    import (
            "fmt"
            "io"
            "os"
            //"io/ioutil"
            "net/http"
            "strings"
    )
    
    func main() {
            //for循环命令行参数
            for _, url := range os.Args[1:] {
                    //加入前缀
                    if !strings.HasPrefix(url, "http://") {
                            url = "http://" + url 
                    }   
                    res, err := http.Get(url)
                    //判断错误
                    if err != nil {
                            //向标准错误流打印信息
                            fmt.Fprintf(os.Stderr, "fetch:%v 
    ", err)
                            //终止进程
                            os.Exit(1)
                    }   
                    //输出http code
                    fmt.Printf("
    http status code :%s
    ", res.Status)
    
                    //body,err := ioutil.ReadAll(res.Body)
                    //避免申请一个缓冲区,直接到标准输出流
                    io.Copy(os.Stdout, res.Body)
                    //判断错误
                    if err != nil {
                            //向标准错误流打印信息
                            fmt.Fprintf(os.Stderr, "fetch:%v 
    ", err)
                            //终止进程
                            os.Exit(1)
                    }   
                    res.Body.Close()
                    //输出http code
                    fmt.Printf("
    http status code :%s
    ", res.Status)
                    //fmt.Printf("%s",body)
            }   
    }
    

      

  • 相关阅读:
    Windows access Linux / Ubuntu via Remote Desktop via xrdp
    Difference between model.evaluate vs model.predict in Keras
    Ubuntu pydot failed to call GraphViz.Please install GraphViz 解决方法
    体验godaddy域名转入,添加A记录,及使用dnspod的NS
    安装SQL Server 2008,一直要求重启电脑的解决办法
    在线网站探测工具-阿里测
    iis日志分析软件及大文本切割软件下载
    C# web服务器被webbench攻击及目现采用的防御措施
    C# iframe session 丢失
    C# CashCode项目开发
  • 原文地址:https://www.cnblogs.com/taoshihan/p/8717278.html
Copyright © 2011-2022 走看看