Http POST导致:返回的参数太多

Http POST导致:返回的参数太多,post,go,Post,Go,我在使用Golang执行POST时遇到一些问题。使用下面的代码 func Postfunc(w http.ResponseWriter , rep *http.Request) { var jsonStr = []byte(`{"id":"10012"}`) req, err := http.NewRequest("POST", "url", bytes.NewBuffer(jsonStr)) req.Header.Set("Content-Type", "appl

我在使用
Golang
执行
POST
时遇到一些问题。使用下面的代码

func Postfunc(w http.ResponseWriter , rep *http.Request) {
     var jsonStr = []byte(`{"id":"10012"}`)
     req, err := http.NewRequest("POST", "url", bytes.NewBuffer(jsonStr))
     req.Header.Set("Content-Type", "application/Text")
     client := &http.Client{}
     resp, err := client.Do(req)
     if err != nil {
         panic(err)
     }
     fmt.Println("responce Status:", resp.Status)
     fmt.Println("responce Headers:", resp.Header)
     defer resp.Body.Close()
     bodyText, err := ioutil.ReadAll(resp.Body)
     fmt.Println("responce Body:", string(bodyText))
     p := string(bodyText)
     return  p
}
我得到以下错误:

返回的参数太多,have(string),want()


这个错误是什么意思?如何修复此问题?

错误完全正确。您的函数签名是:

func Postfunc(w http.ResponseWriter , rep *http.Request)
它没有返回值。因此,您的最后一行:

return  p
有太多的参数,这将是任何参数。如果要将文本写入HTTP响应,请使用
ResponseWriter

w.Write(bodyText)

这个错误是完全正确的。您的函数签名是:

func Postfunc(w http.ResponseWriter , rep *http.Request)
它没有返回值。因此,您的最后一行:

return  p
有太多的参数,这将是任何参数。如果要将文本写入HTTP响应,请使用
ResponseWriter

w.Write(bodyText)

因此,转到第62行,您正在调用一个不返回任何内容的函数,但您正在执行
x=func()
x:=func()
除了@Adrian的正确答案之外,您还在
NewRequest
中使用
“url”
。我不知道这是不是故意的。另一件事,您应该通过在
bodyText之前添加err来检查请求的状态是否为
200
类似于
if resp!=200{fmt.Println(“接收到无效响应…”)}
。因此,转到第62行,您正在调用一个不返回任何内容的函数,但您正在执行
x=func()
x:=func()
除了@Adrian的正确答案之外,您还在
NewRequest
中使用
“url”
。我不知道这是不是故意的。另一件事,您应该通过在
bodyText之前添加err来检查请求的状态是否为
200
类似于
if resp!=200{fmt.Println(“收到无效响应…”)}