1 回答

TA貢獻1845條經(jīng)驗 獲得超8個贊
我已在本地確認您的代碼(如圖所示)應該可以工作。
這是我使用的代碼:
package main
import (
"bytes"
"encoding/json"
"fmt"
"io/ioutil"
"net/http"
"time"
)
func main() {
http.HandleFunc("/", handler)
go func(){
http.ListenAndServe(":8080", nil)
}()
AddHealthCheck()
}
func handler(w http.ResponseWriter, r *http.Request) {
fmt.Fprintf(w, "Hi there")
}
func panicError(err error) {
if err != nil {
panic(err)
}
}
func AddHealthCheck() (string, error) {
//convert go struct to json
payload := "bob"
jsonPayload, err := json.Marshal(payload)
panicError(err)
// Create client & set timeout
client := &http.Client{}
client.Timeout = time.Second * 15
// Create request
req, err := http.NewRequest("POST", "http://localhost:8080", bytes.NewBuffer(jsonPayload))
panicError(err)
req.Header.Set("Content-Type", "application/json")
// Fetch Request
resp, err := client.Do(req)
panicError(err)
defer resp.Body.Close()
// Read Response Body
respBody, err := ioutil.ReadAll(resp.Body)
panicError(err)
fmt.Println("response Status : ", resp.Status)
fmt.Println("response Headers : ", resp.Header)
fmt.Println("response Body : ", string(respBody))
return string(respBody), nil
}
上面的代碼只是您代碼的一個稍微精簡的版本,它輸出響應的主體。(注意我這里提供了一個服務器來接收post請求并返回響應)
服務器根本不會向您發(fā)送正文。您可以使用 wireshark 之類的工具來確認這一點。
如果您使用郵遞員取回身體,則必須在郵遞員中發(fā)送與在 go 中不同的請求。有時很難看出有什么區(qū)別,因為 go 和 postman 有時會在幕后添加您看不到的標題。同樣,wireshark 之類的工具在這里可以提供幫助。
或者,如果您有權訪問服務器,則可以在其中添加日志。
- 1 回答
- 0 關注
- 411 瀏覽
添加回答
舉報