在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問答/GO/ golang post json數(shù)據(jù)后服務(wù)器端獲取不到內(nèi)容?

golang post json數(shù)據(jù)后服務(wù)器端獲取不到內(nèi)容?

碰到個(gè)靈異事件,我用golang的http庫發(fā)送post請求,請求參數(shù)為json格式字符串,代碼如下:

...
    jsonParams := `{"name":"kazaff"}`

    req, err := http.NewRequest("POST", url,  strings.NewReader(jsonParams))
    if err != nil {
        panic(err)
    }
    req.Header.Set("Content-Type", "application/json;charset=UTF-8")
    client := &http.Client{}
    resp, err := client.Do(req)
    if err != nil {
        panic(err)
    }
    defer resp.Body.Close()
...

服務(wù)端同樣使用golang來實(shí)現(xiàn),解析客戶端發(fā)送的請求后,一直報(bào)錯(cuò),我打印出來log.Println(r.Body)后,發(fā)現(xiàn)是{}。。。

而我用postman提交相同的json數(shù)據(jù)給服務(wù)端,就可以獲取正確的數(shù)據(jù)。蒙了,有哪位高手能指點(diǎn)一下小弟啊。

============

我補(bǔ)上服務(wù)端的代碼:

...
router.HandleFunc("/",func(rep http.ResponseWriter, r *http.Request){
    log.Println(r.Body)
    defer r.Body.Close()
})
...
回答
編輯回答
熟稔

客戶端:

package main

import (
    "bytes"
    "net/http"
    "fmt"
)

func main() {
    url := "xxxxxxxxxx"
    jsonParams := `{"name":"kazaff"}`

    req, err := http.NewRequest("POST", url,  bytes.NewReader([]byte(jsonParams)))
    if err != nil {
        panic(err)
    }
    req.Header.Set("Content-Type", "application/json;charset=UTF-8")
    client := &http.Client{}
    resp, err := client.Do(req)
    if err != nil {
        panic(err)
    }
    defer resp.Body.Close()

    fmt.Println("Response Status:", resp.Status)
}

建議使用bytes,另外strings也是可以的,我在服務(wù)端驗(yàn)證了一下范例的代碼,OK

建議你把服務(wù)端的代碼補(bǔ)充一下,方便做整體的判斷


我在gin中用于測試的服務(wù)端部分代碼:

buf := make([]byte, 1024)
n, _ := c.Request.Body.Read(buf)
fmt.Println(string(buf[0:n]))
2018年1月9日 01:31