为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

Go
千巷猫影 2021-10-18 10:07:49
当我使用下面的 GO 函数发出 POST 请求时。我invalid json在服务器端得到一个。例如,如果我发送静态 jsonvar 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))    }}
查看完整描述

2 回答

?
慕码人2483693

TA贡献1860条经验 获得超9个赞

如果你使用

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

服务器会得到这样的数据:

`{username:your_username,password:yourpassword}`

因为在双引号中的反引号 `` 中的字符串不是原始字符串文字,当然它是无效的 json。您可以手动编写 json 字符串:

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



查看完整回答
反对 回复 2021-10-18
  • 2 回答
  • 0 关注
  • 151 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信