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

use*_*091 2 go

当我使用下面的GO功能发出POST请求时.我invalid json在服务器端得到了一个.

如果我发送静态json例如

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

它确实有效而不是

var jsonprep string = "`{username:"+username+",password:"+password+"}`"
Run Code Online (Sandbox Code Playgroud)

.

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))
    }

}
Run Code Online (Sandbox Code Playgroud)

Rob*_*ier 7

你引用错了:

http://play.golang.org/p/PueWyQ1atq

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

===> `{username:Bob,password:pass}`
Run Code Online (Sandbox Code Playgroud)

你的意思是:

http://play.golang.org/p/LMuwxArf8G

var jsonprep string = `{"username":"`+username+`","password":"`+password+`"}`
===> {"username":"Bob","password":"pass"}
Run Code Online (Sandbox Code Playgroud)