Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Go 回复。主体返回一个“回复”;“空的”;身体_Go - Fatal编程技术网

Go 回复。主体返回一个“回复”;“空的”;身体

Go 回复。主体返回一个“回复”;“空的”;身体,go,Go,我得到了回复以及标题回复和所有内容,但由于某种原因,身体是空的: 我在完整的URL中添加了注释,以便您自己检查,并查看响应正文不应为空。问题不在go程序中,您需要提供额外的标题。在这种情况下,它是一个Cookie标题: package main import ( "fmt" "io/ioutil" "net/http" ) const url = "http://comicbookdb.com/search.php" func main() { reque

我得到了回复以及标题回复和所有内容,但由于某种原因,身体是空的:


我在完整的URL中添加了注释,以便您自己检查,并查看响应正文不应为空。

问题不在go程序中,您需要提供额外的标题。在这种情况下,它是一个
Cookie
标题:

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))
}
输出:

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 ....
2018年7月9日星期一06:13:35 GMT
200
阿帕奇
&{0xc420060040{0 0}假0x5e2200 0x5e2190}

它与页面相关。你可以设置一个额外的标题。在这种情况下,
连接
标题

...
request.Header.Set("Connection", "keep-alive")
client := http.DefaultClient
response, err := client.Do(request)
...

我可以用Python获得响应体:这肯定是我在这个Go代码中遗漏的一些愚蠢的东西……哦,天哪,非常感谢!我知道这是件愚蠢的事。。。那么Python的请求库是否自动包含cookie头呢?我不知道python,我所知道的一切都是关于go的,你必须是文字。你是如何生成cookie的?你刚刚从浏览器中复制并粘贴了吗?第一次,我使用了chrome开发者控制台,有一个选项
copy as cURL command
。您可以传递任意字符串,我已经使用了
PHPSESSID=XXXXXXXX
,它可以工作。
...
request.Header.Set("Connection", "keep-alive")
client := http.DefaultClient
response, err := client.Do(request)
...