猿问

无法在 GO 中发送 JSON 作为 HTTP POST 请求的正文

当我使用下面的 GO 函数发出 POST 请求时。我invalid json在服务器端得到一个。


例如,如果我发送静态 json


var jsonprep = []byte(`{"username":"xyz@gmail.com","password":"xyz123"}`) 

它确实有效,而不是


var jsonprep string = "`{username:"+username+",password:"+password+"}`"

.


func makeHttpPostReq(url string, username string, password string){


    client := http.Client{}



    var jsonprep string = "`{username:"+username+",password:"+password+"}`"


    var jsonStr = []byte(jsonprep)


    req, err := http.NewRequest("POST", url, bytes.NewBuffer(jsonStr))

    req.Header.Set("Content-Type", "application/json")


    resp, err := client.Do(req)

    if err != nil {

         fmt.Println("Unable to reach the server.")

    } else {

         body, _ := ioutil.ReadAll(resp.Body)

         fmt.Println("body=", string(body))

    }


}


千巷猫影
浏览 152回答 2
2回答

慕码人2483693

如果你使用var jsonprep string = "`{username:"+username+",password:"+password+"}`"服务器会得到这样的数据:`{username:your_username,password:yourpassword}`因为在双引号中的反引号 `` 中的字符串不是原始字符串文字,当然它是无效的 json。您可以手动编写 json 字符串:var jsonprep string = "{\"username\":\"" + username + "\",\"password\":\"" + password + "\"}"
随时随地看视频慕课网APP

相关分类

Go
我要回答