Tôi đã thử làm việc với Aperator và tạo một mẫu phổ quát để gửi JSON đến máy chủ giả và có mã này:
package main
import (
"encoding/json"
"fmt"
"github.com/jmcvetta/napping"
"log"
"net/http"
)
func main() {
url := "http://restapi3.apiary.io/notes"
fmt.Println("URL:>", url)
s := napping.Session{}
h := &http.Header{}
h.Set("X-Custom-Header", "myvalue")
s.Header = h
var jsonStr = []byte(`
{
"title": "Buy cheese and bread for breakfast."
}`)
var data map[string]json.RawMessage
err := json.Unmarshal(jsonStr, &data)
if err != nil {
fmt.Println(err)
}
resp, err := s.Post(url, &data, nil, nil)
if err != nil {
log.Fatal(err)
}
fmt.Println("response Status:", resp.Status())
fmt.Println("response Headers:", resp.HttpResponse().Header)
fmt.Println("response Body:", resp.RawText())
}
Mã này không gửi JSON đúng cách, nhưng tôi không biết tại sao. Chuỗi JSON có thể khác nhau trong mỗi cuộc gọi. Tôi không thể sử dụng Struct
cho việc này.
json.Marshall
nó, tôi không chắc tại sao nó không hoạt động cho anh ta.