回答

收藏

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(&quotOST",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
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则