Go 中的 POST 请求中发送 JSON 字符串
技术问答
324 人阅读
|
0 人回复
|
2023-09-12
|
我试着用 Apiary 并制作了一个通用模板JSON 发送到模拟服务器并使用以下代码:: {% M9 C' \) n. Z( A. |
9 e: D, Q3 n+ {" h" |
- package mainimport "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()code]代码没有正确发送 JSON,但我不知道为什么。JSON 字符串每次调用都可以不同。我不能用它。Struct这个。. ~& E, ] G4 B* `
- ) q$ n- }: r2 B- m
- 解决方案: 1 C f' g! @$ u" ]( I' W
- 我不熟悉napping,但使用 Golang 的net/http包工作正常(play.golang):[code]func main() url := "http://restapi3.apiary.io/notes" fmt.Println("URL:>",url) var jsonStr = []byte(`{"title":"Buy cheese and bread for breakfast."}`) req,err := http.NewRequest("
OST",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("response Status:",resp.Status) fmt.Println("response Headers:",resp.Header) body,_ := ioutil.ReadAll(resp.Body) fmt.Println("response Body:",string(body))}
% |) z8 f# [0 Z, W. b8 O a |
|
|
|
|
|