iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > GO >Golang语言HTTP客户端的示例分析
  • 568
分享到

Golang语言HTTP客户端的示例分析

2023-06-25 12:06:18 568人浏览 安东尼
摘要

这篇文章将为大家详细讲解有关golang语言Http客户端的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。HTTP客户端封装package taskimport ( 

这篇文章将为大家详细讲解有关golang语言Http客户端的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

HTTP客户端封装

package taskimport ( "bytes" "encoding/JSON" "fmt" "io/ioutil" "net/http" "net/url" "strings" "time")var Client http.Client = clients()// Res 模拟响应结构// @Description:type Res struct { Have string `json:"Have"`}// Get 获取GET请求// @Description:// @param uri// @param args// @return *http.Requestfunc Get(uri string, args map[string]interface{}) *http.Request { uri = uri +  "?" +ToValues(args) request, _ := http.NewRequest("get", uri, nil) return request}// PostFORM POST接口form表单// @Description:// @param path// @param args// @return *http.Requestfunc PostForm(path string, args map[string]interface{}) *http.Request { request, _ := http.NewRequest("post", path, strings.NewReader(ToValues(args))) return request}// PostJson POST请求,JSON参数// @Description:// @param path// @param args// @return *http.Requestfunc PostJson(path string, args map[string]interface{}) *http.Request { marshal, _ := json.Marshal(args) request, _ := http.NewRequest("post", path, bytes.NewReader(marshal)) return request}// ToValues 将map解析成HTTP参数,用于GET和POST form表单// @Description:// @param args// @return stringfunc ToValues(args map[string]interface{}) string { if args != nil && len(args) > 0 {  params := url.Values{}  for k, v := range args {   params.Set(k, fmt.Sprintf("%v", v))  }  return params.Encode() } return ""}// Response 获取响应详情,默认[]byte格式// @Description:// @param request// @return []bytefunc Response(request *http.Request) []byte { res, err := Client.Do(request) if err != nil {  return nil } body, _ := ioutil.ReadAll(res.Body) // 读取响应 body, 返回为 []byte defer res.Body.Close() return body}// clients 初始化请求客户端// @Description:// @return http.Clientfunc clients() http.Client { return http.Client{  Timeout: time.Duration(5) * time.Second, //超时时间  Transport: &http.Transport{   MaxIdleConnsPerHost:   5,   //单个路由最大空闲连接数   MaxConnsPerHost:       100, //单个路由最大连接数   IdleConnTimeout:       90 * time.Second,   TLSHandshakeTimeout:   10 * time.Second,   ExpectContinueTimeout: 1 * time.Second,  }, }}// ParseRes 解析响应// @Description:// @receiver r// @param resfunc (r *Res) ParseRes(res []byte) { json.Unmarshal(res, r)}// ParseRes 解析响应,将[]byte转成传入对象// @Description:// @param res// @param r//func ParseRes(res []byte, r interface{}) { json.Unmarshal(res, r)}

测试脚本

package mainimport ( "fmt" "funtester/src/task" "io" "log" "net/http" "os" "time")const ( a = iota b c d e)func init() { os.Mkdir("./log/", 0777) os.Mkdir("./long/", 0777) file := "./log/" + string(time.Now().Format("20060102")) + ".log" openFile, _ := os.OpenFile(file, os.O_RDWR|os.O_CREATE|os.O_APPEND, 0666) writer := io.MultiWriter(os.Stdout, openFile) log.SetOutput(writer) log.SetFlags(log.LstdFlags | log.Lshortfile | log.Ldate)}func main() { url := "http://localhost:12345/test" args := map[string]interface{}{  "name": "FunTester",  "fun":  "fdsafj", } cookie := &http.Cookie{  Name:  "token",  Value: "fsjej09u0934jtej", } get := task.Get(url, args) get.Header.Add("user_agent", "FunTester") get.AddCookie(cookie) response := task.Response(get) fmt.Println(string(response)) form := task.PostForm(url, args) bytes := task.Response(form) fmt.Println(string(bytes)) json := task.PostJson(url, args) res := task.Response(json) fmt.Println(string(res))}

控制台输出

GoROOT=/usr/local/go #gosetup
GOPATH=/Users/oker/go #gosetup
/usr/local/go/bin/go build -o /private/var/folders/7b/0djfgf7j7p9ch_hgm9wx9n6w0000gn/T/GoLand/___go_build_funtester_src_m funtester/src/m #gosetup
/private/var/folders/7b/0djfgf7j7p9ch_hgm9wx9n6w0000gn/T/GoLand/___go_build_funtester_src_m
get请求
post请求form表单
post请求json表单

Process finished with the exit code 0

测试服务

依旧采用了moco_FunTester测试框架实现。

package com.mocofun.moco.mainimport com.funtester.utils.ArgsUtilimport com.mocofun.moco.MocoServerclass Share extends MocoServer {    static void main(String[] args) {        def util = new ArgsUtil(args)        //                def server = getServerNoLog(util.getIntOrdefault(0,12345))        def server = getServer(util.getIntOrdefault(0, 12345))        server.get(urlStartsWith("/test")).response("get请求")        server.post(both(urlStartsWith("/test"), existForm("fun"))).response("post请求form表单")        server.post(both(urlStartsWith("/test"), existParams("fun"))).response("post请求json表单")        server.get(urlStartsWith("/qps")).response(qps(textRes("恭喜到达QPS!"), 1))//        server.response(delay(jsonRes(getJson("Have=Fun ~ Tester !")), 1000))        server.response("Have Fun ~ Tester !")        def run = run(server)        waitForKey("fan")        run.stop()    }}

关于“Golang语言HTTP客户端的示例分析”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。

您可能感兴趣的文档:

--结束END--

本文标题: Golang语言HTTP客户端的示例分析

本文链接: https://www.lsjlt.com/news/304732.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Golang语言HTTP客户端的示例分析
    这篇文章将为大家详细讲解有关Golang语言HTTP客户端的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。HTTP客户端封装package taskimport ( ...
    99+
    2023-06-25
  • 详解Golang语言HTTP客户端实践
    目录HTTP客户端封装 测试脚本 测试服务 最近在学习Golang语言,中间遇到一个前辈指点,有一个学习原则:Learning By Doing。跟我之前学习Java的经验高度契合。...
    99+
    2024-04-02
  • Java中http下载文件客户端和上传文件客户端的示例分析
    这篇文章主要介绍了Java中http下载文件客户端和上传文件客户端的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。一、下载客户端代码package java...
    99+
    2023-05-30
    java http
  • Kafka Java客户端代码的示例分析
    这篇文章将为大家详细讲解有关Kafka Java客户端代码的示例分析,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。kafka是一种高吞吐量的分布式发布订阅消息系统kafka是linkedin...
    99+
    2023-06-17
  • Spring-Boot集成Solr客户端的示例分析
    这篇文章主要为大家展示了“Spring-Boot集成Solr客户端的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Spring-Boot集成Solr客户端的示例分析”这篇文章吧。Solr...
    99+
    2023-05-30
    spring boot solr
  • Kafka简单客户端编程的示例分析
    这篇文章将为大家详细讲解有关Kafka简单客户端编程的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。一、创建配置类Config这个类很简单,只是存放了两个常量,一个是话题TOPIC,一个是线程数T...
    99+
    2023-05-30
    kafka
  • 客户端JavaScript线程池设计的示例分析
    这篇“客户端JavaScript线程池设计的示例分析”除了程序员外大部分人都不太理解,今天小编为了让大家更加理解“客户端JavaScript线程池设计的示例分析”,给大家总结了以下内容,具有一定借鉴价值,内容详细步骤清晰,细节处理妥当,希望...
    99+
    2023-06-28
  • Grails Ajax富客户端插件对比的示例分析
    这篇文章给大家分享的是有关Grails Ajax富客户端插件对比的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。最近,Dean Del Ponte就撰文对4个Grails...
    99+
    2024-04-02
  • vue3+electron12+dll开发客户端配置的示例分析
    小编给大家分享一下vue3+electron12+dll开发客户端配置的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!修改仓库源由于electron版本的...
    99+
    2023-06-15
  • http前端存储的示例分析
    小编给大家分享一下http前端存储的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!cookie为什么会有cookieht...
    99+
    2024-04-02
  • 前端HTTP协议的示例分析
    这篇文章将为大家详细讲解有关前端HTTP协议的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。实际上前端功能会在实际开发中经常的接触浏览器网络相关的,一共四个部分。1、原因如图,那么为什么要在前端进...
    99+
    2023-06-05
  • UDP服务器客户端编程流程的示例分析
    这篇文章给大家分享的是有关UDP服务器客户端编程流程的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。UDP编程流程UDP提供的是无连接、不可靠的、数据报服务UDP是尽最大能力进行传输,但是并不能保证可靠性...
    99+
    2023-06-21
  • Go语言怎么实现HTTP服务器和客户端
    在Go语言中,可以通过使用标准库中的"net/http"包来实现HTTP服务器和客户端。 下面是一个简单的HTT...
    99+
    2024-04-12
    Go语言 服务器
  • 如何利用Go语言打造高效的HTTP客户端?
    在现代的Web应用程序中,HTTP客户端是一个不可或缺的组件。不论是向第三方API发送请求,还是在应用程序内部调用其他服务,我们都需要一个可靠、高效的HTTP客户端。本文将介绍如何使用Go语言编写一个高效的HTTP客户端。 一、Go语言中...
    99+
    2023-11-09
    http numpy unix
  • Netty分布式客户端处理接入事件handle的示例分析
    这篇文章主要介绍了Netty分布式客户端处理接入事件handle的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。处理接入事件创建handle回到上一章NioEvent...
    99+
    2023-06-29
  • 云函数Todo重构+Vue客户端调用的示例分析
    云函数Todo重构+Vue客户端调用的示例分析,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。先配置一个添加任务的函数。注意,配置文件不能帮我们...
    99+
    2024-04-02
  • 在golang中覆盖gRPC客户端的http主机头
    在golang中覆盖gRPC客户端的http主机头是一个常见的需求。gRPC是一种高性能、跨语言的远程过程调用框架,而在使用gRPC进行通信时,有时需要自定义http请求的主机头。ph...
    99+
    2024-02-09
  • javascript关于前端开发语言的示例分析
    这篇文章将为大家详细讲解有关javascript关于前端开发语言的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。1、javascript是前端开发语言,经常与html、css技术一起构成前端开发。...
    99+
    2023-06-20
  • elasticsearch构造Client实现java客户端调用接口示例分析
    目录client的继承关系方法实现上以index方法为例execute方法代码总结:elasticsearch通过构造一个client对外提供了一套丰富的java调用接口。总体来说c...
    99+
    2024-04-02
  • Nacos客户端配置中心缓存动态更新的示例分析
    这篇文章将为大家详细讲解有关Nacos客户端配置中心缓存动态更新的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。Nacos 作为配置中心,当应用程序去访问Nacos动态获取配置源之后,会缓存到本地...
    99+
    2023-06-29
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作