用post方法发送json数据失败,

bsdx866 · 2023-06-02 19:32:59 · 2439 次点击 · 大约8小时之前 开始浏览    置顶
这是一个创建于 2023-06-02 19:32:59 的主题,其中的信息可能已经有所发展或是发生改变。

我想要调用http.NewRequest方法到服务器接口发送json数据,但是返回的结果是失败,但是用http.Post方法到服务器接口发送json数据成功,现在想不通问题出在什么地方,请给指点一二谢谢!

package hrlib

import (
    "bytes"
    "encoding/json"
    "fmt"
    "io/ioutil"
    "log"
    "net/http"
    "time"
)
//人员用户考勤信息
type kqInfo struct {
    UserLname string `json:"userLname"`
    UserNo    string `json:"userNo"`
    Kssj      string `json:"kssj"`
    Jssj      string `json:"jssj"`
}
type userInfo struct {
    PageIndex int    `json:"pageIndex"`
    PageSize  int    `json:"pageSize"`
    Search    kqInfo `json:"search"`
}

//返回一个要查询的用户对象
func NewUserInfo() *userInfo {
    var kssj = time.Date(2023, 6, 1, 8, 0, 0, 0, time.UTC).Format("2006-01-02 15:04:05")
    var jssj = time.Date(2023, 6, 1, 23, 0, 0, 0, time.UTC).Format("2006-01-02 15:04:05")
    return &userInfo{
        PageIndex: 1,
        PageSize:  3,
        Search: kqInfo{
            UserLname: "张三",
            UserNo:    "2016050395",
            Kssj:      kssj,
            Jssj:      jssj,
        },
    }
}
//获取用户考勤信息
func GetUser() {
    var url = "http://192.168.1.100:20039/api/kq/getKqjl"
    var kqUserInfo = NewUserInfo()
    var kqData,err = json.Marshal(kqUserInfo)
    if err != nil{
        log.Println("json序列化错误")
        return
    }
    req, err := http.NewRequest("post", url, bytes.NewReader(kqData))
    if err != nil {
        log.Println(err)
        return
    }
    req.Header.Set("content-Type", "application/json")
    var client = http.DefaultClient
    resp, err := client.Do(req)
    if err != nil {
        log.Println("服务端响应失败")
        return
    }
    //用Post这个方法返回的resp响应就没有问题
        //resp,_:=http.Post(url,"application/json",bytes.NewReader(kqData))
    defer resp.Body.Close()
    body, err := ioutil.ReadAll(resp.Body)
    if err != nil {
        log.Println("数据读取失败")
        return
    }
    fmt.Printf("%s\n", body)
}

有疑问加站长微信联系(非本文作者)

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

2439 次点击  
加入收藏 微博
6 回复  |  直到 2023-06-19 08:14:17
sanrentai
sanrentai · #1 · 2年之前

服务端响应失败,还是数据读取失败

Neightly
Neightly · #2 · 2年之前

HTTP methods are case-sensitive, which means they should only be used in capital letters. Moreover, this is in contrast to HTTP header field names, which are case-insensitive.

alphayan
alphayan · #3 · 2年之前

把 err 打印一下,不要打印"数据xx失败"

GGXXLL
GGXXLL · #4 · 2年之前

0.0

YuPeng
YuPeng · #5 · 2年之前

http.NewRequest("post", url, bytes.NewReader(kqData)) post 用大写试试(http.MethodPost),另外出现错误环视打印一下日志较好

bsdx866
bsdx866 · #6 · 2年之前

5楼 @YuPeng 谢谢指点!问题就是出在post没有大写或者没用http.MethodPost导致的,问题已经解决了。十分感谢!

添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传