dongshuofu0039 2018-07-09 04:17
浏览 25
已采纳

回应:身体返回“空”身

I am getting a response back as well as header responses and everything, but for some reason the body is empty:

https://repl.it/repls/HastyAggravatingArchitect

package main

import (
    "fmt"
    "net/http"
    "io/ioutil"
)


const url = "http://comicbookdb.com/search.php"

func main() {
    request, err := http.NewRequest(http.MethodGet, url, nil)
    if err != nil {
        fmt.Println(err.Error())
        return
    }
    q := request.URL.Query()
    q.Add("form_search", "Captain America")
    q.Add("form_searchtype", "Character")
  // http://comicbookdb.com/search.php?form_search=captain%20america&form_searchtype=Character
    request.URL.RawQuery = q.Encode()
    client := http.DefaultClient
    response, err := client.Do(request)
    fmt.Println(response.Header.Get("Date"))
    fmt.Println(response.StatusCode)
    fmt.Println(response.Header.Get("Server"))
    fmt.Println(response.Body)  

    r, err := ioutil.ReadAll(response.Body)
    if err != nil {
        fmt.Println(err.Error())
    }
    fmt.Println(string(r))
}

I commented in the full URL so that you can check it out yourself and see that the response body should not be empty.

  • 写回答

2条回答 默认 最新

  • douchu2823 2018-07-09 06:14
    关注

    The problem is not in the go program, you need provide additional header in this case it's a Cookie header:

    package main
    
    import (
        "fmt"
        "io/ioutil"
        "net/http"
    )
    
    const url = "http://comicbookdb.com/search.php"
    
    func main() {
        request, err := http.NewRequest(http.MethodGet, url, nil)
        if err != nil {
            fmt.Println(err.Error())
            return
        }
        // Here is requeired header
        request.Header.Add("Cookie", "PHPSESSID=jmujtqjctuk1bv1g02ni88q9u5'") 
        q := request.URL.Query()
        q.Add("form_search", "Captain America")
        q.Add("form_searchtype", "Character")
        request.URL.RawQuery = q.Encode()
        client := &http.Client{}
        response, err := client.Do(request)
        if err != nil {
            fmt.Println(err.Error())
            return
        }
        fmt.Println(response.Header.Get("Date"))
        fmt.Println(response.StatusCode)
        fmt.Println(response.Header.Get("Server"))
        fmt.Println(response.Body)
    
        r, err := ioutil.ReadAll(response.Body)
        if err != nil {
            fmt.Println(err.Error())
        }
        fmt.Println(string(r))
    }
    

    The output:

    Mon, 09 Jul 2018 06:13:35 GMT
    200
    Apache
    &{0xc420060040 {0 0} false <nil> 0x5e2200 0x5e2190}
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org ...
    ..... omitted ....
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 多址通信方式的抗噪声性能和系统容量对比
  • ¥15 winform的chart曲线生成时有凸起
  • ¥15 msix packaging tool打包问题
  • ¥15 finalshell节点的搭建代码和那个端口代码教程
  • ¥15 用hfss做微带贴片阵列天线的时候分析设置有问题
  • ¥15 Centos / PETSc / PETGEM
  • ¥15 centos7.9 IPv6端口telnet和端口监控问题
  • ¥20 完全没有学习过GAN,看了CSDN的一篇文章,里面有代码但是完全不知道如何操作
  • ¥15 使用ue5插件narrative时如何切换关卡也保存叙事任务记录
  • ¥20 海浪数据 南海地区海况数据,波浪数据