Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/http/4.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
Http Go-运行时错误:无效内存地址或零指针取消引用_Http_Go_Proxy_Panic - Fatal编程技术网

Http Go-运行时错误:无效内存地址或零指针取消引用

Http Go-运行时错误:无效内存地址或零指针取消引用,http,go,proxy,panic,Http,Go,Proxy,Panic,我试图使用Go创建一个代理服务器,将请求主体中的某些值更改为API。但是,当发送请求时,会出现以下恐慌,请求失败: 2015/05/03 14:17:52 http: panic serving 192.168.1.139:42818: runtime error: invalid memory address or nil pointer dereference goroutine 72 [running]: net/http.func·011() /usr/lib/go/src/pk

我试图使用Go创建一个代理服务器,将请求主体中的某些值更改为API。但是,当发送请求时,会出现以下恐慌,请求失败:

2015/05/03 14:17:52 http: panic serving 192.168.1.139:42818: runtime error: invalid memory address or nil pointer dereference
goroutine 72 [running]:
net/http.func·011()
    /usr/lib/go/src/pkg/net/http/server.go:1100 +0xb1
runtime.panic(0x8258ee0, 0x83b3733)
    /usr/lib/go/src/pkg/runtime/panic.c:248 +0x176
main.viewResponse(0x0, 0x1861b470, 0x1860ed01)
    /home/bradley/turbocharger/proxy.go:40 +0xa2
github.com/elazarl/goproxy.FuncRespHandler.Handle(0x82e6480, 0x0, 0x1861b470, 0x1)
    /home/bradley/gopath/src/github.com/elazarl/goproxy/actions.go:35 +0x39
github.com/elazarl/goproxy.func·016(0x0, 0x1861b470, 0x827a768)
    /home/bradley/gopath/src/github.com/elazarl/goproxy/dispatcher.go:279 +0x18f
github.com/elazarl/goproxy.FuncRespHandler.Handle(0x1868c9b0, 0x0, 0x1861b470, 0x4)
    /home/bradley/gopath/src/github.com/elazarl/goproxy/actions.go:35 +0x39
github.com/elazarl/goproxy.(*ProxyHttpServer).filterResponse(0x18682640, 0x0, 0x1861b470, 0x0)
    /home/bradley/gopath/src/github.com/elazarl/goproxy/proxy.go:69 +0x95
github.com/elazarl/goproxy.(*ProxyHttpServer).ServeHTTP(0x18682640, 0xb74dd780, 0x18601260, 0x18600bd0)
    /home/bradley/gopath/src/github.com/elazarl/goproxy/proxy.go:115 +0x39b
net/http.serverHandler.ServeHTTP(0x18681dc0, 0xb74dd780, 0x18601260, 0x18600bd0)
    /usr/lib/go/src/pkg/net/http/server.go:1673 +0x155
net/http.(*conn).serve(0x18628a00)
    /usr/lib/go/src/pkg/net/http/server.go:1174 +0x8c6
created by net/http.(*Server).Serve
    /usr/lib/go/src/pkg/net/http/server.go:1721 +0x2be
以下是脚本:

func viewResponse(response *http.Response, ctx *goproxy.ProxyCtx) *http.Response {
    log.Printf("Response: %s", response.Status)

    return response
}

响应
nil

文档中:“如果出现错误,resp将为零,ctx.RoundTrip.error将包含错误。”

因此,实现响应处理程序的正确方法如下:

func viewResponse(response *http.Response, ctx *goproxy.ProxyCtx) *http.Response {
    if response == nil {
        log.Printf("Error: %s", ctx.RoundTrip.Error)
    } else {
        log.Printf("Response: %s", response.Status)
    }
    return response
}

请回答您的问题并缩短代码,以便只包含重现问题所需的部分。我不知道代码的哪一部分导致了问题,如果有人能告诉我是哪一部分导致了问题,那么我将缩短代码哪一行是
/home/bradley/涡轮增压器/proxy.go:40
?请阅读stacktrace,它告诉您需要知道的一切。谢谢,这帮助我发现请求没有到达服务器,因为request.ContentLength与正文的实际长度不匹配,很容易修复