2017-05-23 25 views
0

我遇到一些問題,試圖使用Golang執行POST。下面Http 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 
} 

我收到以下錯誤代碼:

too many arguments to return, have (string), want()

這個錯誤是什麼意思?我怎樣才能解決這個問題?

+2

所以去線62和你調用一個不返回任何一個功能,但是你在做'X = FUNC()'或'x:= func()' – RayfenWindspear

+0

除了@ Adrian的正確答案之外,你在'NewRequest'中使用''url''。我不知道這是否是有意的。另一件事,你應該檢查你的請求的狀態是否通過在bodyText之前添加'200',錯誤。 。 .'就像'if resp!= 200 {fmt.Println(「Received invalid response ...」)}'。 – AndreaM16

回答

2

錯誤是完全正確的。您的功能簽名是:

func Postfunc(w http.ResponseWriter , rep *http.Request) 

它沒有返回值。因此,你的最後一行:

return p 

有太多的參數,根本就是任何參數。如果你想寫的文字到HTTP響應,使用ResponseWriter

w.Write(bodyText)