在go语言中通过Post的方法提交json的数据

本文涉及的产品
全局流量管理 GTM,标准版 1个月
云解析 DNS,旗舰版 1个月
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
简介: 1.把URL及info的对像这两个参数发给login函数把结构体对象转换成json,2.用POST方法提交JSON的数据到服务器上3.通过调用Client.Do方法得到服务器的响应response的JSON4.把服务器响应回来的JSON解析成结构体对象来存储相应的信息5.调用解析JSON的结构体对象的各属性得到相应的信息

package main

import (

"bytes"
"encoding/json"
"flag"
"fmt"
"io/ioutil"
"log"
"net/http"

)

//将获取到的工号和密码解析成JSON
type info struct {

EmpCode     string `json:"empCode"`
EmpPassword string `json:"empPassword"`

}

func NewInfo(empcode, emppasswd string) *info {

return &info{
    EmpCode:     empcode,
    EmpPassword: emppasswd,
}

}

//返回解析JSON后的个人及部门信息
type PersonInfo struct {

EmpCode  string
EmpName  string
EmpPhone string
OrgName  string

}

//返回解析JSON后服务器的状态信息
type BaseInfo struct {

StatusCode        int
Success           bool
ErrCode           interface{}
ErrMsg            interface{}
Body              PersonInfo
Msg               string
BussinessCategory int64

}

/*
1.把URL及info的对像这两个参数发给login函数把结构体对象转换成json,
2.用POST方法提交JSON的数据到服务器上
3.通过调用Client.Do方法得到服务器的响应response的JSON
4.把服务器响应回来的JSON解析成结构体对象来存储相应的信息
5.调用解析JSON的结构体对象的各属性得到相应的信息
*/
func login(url string, i *info) {

data, err := json.Marshal(i)
if err != nil {
    log.Fatal(err)
}
req, err := http.NewRequest("POST", url, bytes.NewBuffer(data))
if err != nil {
    log.Fatal(err)
}
req.Header.Set("Content-Type", "application/json")
var client = http.DefaultClient
response, err := client.Do(req)
if err != nil {
    log.Fatal(err)
}
defer response.Body.Close()
BodyData, err := ioutil.ReadAll(response.Body)
if err != nil {
    log.Fatal(err)
}
var info = BaseInfo{}
err = json.Unmarshal(BodyData, &info)
if err != nil {
    log.Fatal(err)
}
switch info.StatusCode {
case 200:
    fmt.Printf("%s 工号: %s 姓名: %s 部门: %s 联系电话: %s\n", info.Msg, info.Body.EmpCode, info.Body.EmpName, info.Body.OrgName, info.Body.EmpPhone)
case 500:
    fmt.Printf("登录失败,%s", info.Msg)
    return
}

}
func main() {

var url = "http://xxxxxx"
var empCode, emPasswd string
flag.StringVar(&empCode, "c", "", "输入工号:xxxxxx")
flag.StringVar(&emPasswd, "p", "", "输入身份证后六位")
flag.Parse()
ip := NewInfo(empCode, emPasswd)
login(url, ip)

}

相关文章
|
29天前
|
数据采集 JSON 数据处理
抓取和分析JSON数据:使用Python构建数据处理管道
在大数据时代,电商网站如亚马逊、京东等成为数据采集的重要来源。本文介绍如何使用Python结合代理IP、多线程等技术,高效、隐秘地抓取并处理电商网站的JSON数据。通过爬虫代理服务,模拟真实用户行为,提升抓取效率和稳定性。示例代码展示了如何抓取亚马逊商品信息并进行解析。
抓取和分析JSON数据:使用Python构建数据处理管道
|
15天前
|
JSON 数据格式 索引
Python中序列化/反序列化JSON格式的数据
【11月更文挑战第4天】本文介绍了 Python 中使用 `json` 模块进行序列化和反序列化的操作。序列化是指将 Python 对象(如字典、列表)转换为 JSON 字符串,主要使用 `json.dumps` 方法。示例包括基本的字典和列表序列化,以及自定义类的序列化。反序列化则是将 JSON 字符串转换回 Python 对象,使用 `json.loads` 方法。文中还提供了具体的代码示例,展示了如何处理不同类型的 Python 对象。
|
19天前
|
JSON 缓存 前端开发
PHP如何高效地处理JSON数据:从编码到解码
在现代Web开发中,JSON已成为数据交换的标准格式。本文探讨了PHP如何高效处理JSON数据,包括编码和解码的过程。通过简化数据结构、使用优化选项、缓存机制及合理设置解码参数等方法,可以显著提升JSON处理的性能,确保系统快速稳定运行。
|
12天前
|
JSON API 数据安全/隐私保护
拍立淘按图搜索API接口返回数据的JSON格式示例
拍立淘按图搜索API接口允许用户通过上传图片来搜索相似的商品,该接口返回的通常是一个JSON格式的响应,其中包含了与上传图片相似的商品信息。以下是一个基于淘宝平台的拍立淘按图搜索API接口返回数据的JSON格式示例,同时提供对其关键字段的解释
|
1月前
|
JSON JavaScript Java
在Java中处理JSON数据:Jackson与Gson库比较
本文介绍了JSON数据交换格式及其在Java中的应用,重点探讨了两个强大的JSON处理库——Jackson和Gson。文章详细讲解了Jackson库的核心功能,包括数据绑定、流式API和树模型,并通过示例演示了如何使用Jackson进行JSON解析和生成。最后,作者分享了一些实用的代码片段和使用技巧,帮助读者更好地理解和应用这些工具。
在Java中处理JSON数据:Jackson与Gson库比较
|
2月前
|
XML 存储 JSON
Twaver-HTML5基础学习(19)数据容器(2)_数据序列化_XML、Json
本文介绍了Twaver HTML5中的数据序列化,包括XML和JSON格式的序列化与反序列化方法。文章通过示例代码展示了如何将DataBox中的数据序列化为XML和JSON字符串,以及如何从这些字符串中反序列化数据,重建DataBox中的对象。此外,还提到了用户自定义属性的序列化注册方法。
47 1
|
1月前
|
JSON JavaScript API
(API接口系列)商品详情数据封装接口json数据格式分析
在成长的路上,我们都是同行者。这篇关于商品详情API接口的文章,希望能帮助到您。期待与您继续分享更多API接口的知识,请记得关注Anzexi58哦!
|
1月前
|
JSON 前端开发 Java
【Spring】“请求“ 之传递 JSON 数据
【Spring】“请求“ 之传递 JSON 数据
87 2
|
2月前
|
存储 JSON Go
在Gin框架中优雅地处理HTTP请求体中的JSON数据
在Gin框架中优雅地处理HTTP请求体中的JSON数据
|
2月前
|
JSON JavaScript 数据格式
vue写入json数据到文本中+vue引入cdn的用法
vue写入json数据到文本中+vue引入cdn的用法
56 10
下一篇
无影云桌面