实例1:
package main
import (
"bytes"
"fmt"
"io/ioutil"
"net/http"
)
func main() {
url := "http://www.baidu.com"
fmt.Println("url:>", url)
usrId := "login"
pwd := "pwd12344"
//json序列化
post := "{\"UserId\":\"" + usrId +
"\",\"Password\":\"" + pwd +
"\"}"
fmt.Println(url, "post", post)
var jsonStr = []byte(post)
fmt.Println("jsonStr", jsonStr)
fmt.Println("new_str", bytes.NewBuffer(jsonStr))
req, err := http.NewRequest("POST", url, bytes.NewBuffer(jsonStr))
// req.Header.Set("X-Custom-Header", "myvalue")
req.Header.Set("Content-Type", "application/json")
client := &http.Client{}
resp, err := client.Do(req)
if err != nil{
panic(err)
}
defer resp.Body.Close()
fmt.Println("status", resp.Status)
fmt.Println("response:", resp.Header)
body, _ := ioutil.ReadAll(resp.Body)
fmt.Println("response Body:", string(body))
}
实例2:
import (
"net/http"
"encoding/json"
"fmt"
"bytes"
"io/ioutil"
"unsafe"
)
type JsonPostSample struct {
}
func (this *JsonPostSample) SamplePost() {
song := make(map[string]interface{})
song["name"] = "李白"
song["timelength"] = 128
song["author"] = "李荣浩"
bytesData, err := json.Marshal(song)
if err != nil {
fmt.Println(err.Error() )
return
}
reader := bytes.NewReader(bytesData)
url := "http://localhost/echo.php"
request, err := http.NewRequest("POST", url, reader)
if err != nil {
fmt.Println(err.Error())
return
}
request.Header.Set("Content-Type", "application/json;charset=UTF-8")
client := http.Client{}
resp, err := client.Do(request)
if err != nil {
fmt.Println(err.Error())
return
}
respBytes, err := ioutil.ReadAll(resp.Body)
if err != nil {
fmt.Println(err.Error())
return
}
//byte数组直接转成string,优化内存
str := (*string)(unsafe.Pointer(&respBytes))
fmt.Println(*str)
}