go http请求库HttpRequest

原文链接

目录

  • 安装
  • 发送请求
  • 传递URL参数
  • 响应内容
  • Json响应内容
  • 定制请求头
  • BasicAuth 认证
  • JSON请求
  • Cookie
  • 超时
  • 关闭证书验证
  • 调试模式
  • 连接操作
  • Respone对象

安装

go get https://github.com/kirinlabs/HttpRequest

发送请求

导入HttpRequest

import "github.com/kirinlabs/HttpRequest"

实例化

req := HttpRequest.NewRequest()

Get请求

然后,尝试获取某个网页。我们来获取 Github 的公共时间线

返回一个res的Response对象和err的Error对象

res,err := req.Get("https://api.github.com/events")

Post 请求

//无参请求
res,err := req.Post("https://www.baidu.com")

//请求体为文本
res,err := req.Post("https://www.baidu.com","hello")

//请求体为Json字符串
res,err := req.Post("https://www.baidu.com","{\"name\":\"github\"}")

//map传参
res.err := req.Post("https://www.baidu.com",map[string]interface{}{
    "name":"github",
    "type":1,
})

也可以不用实例化,直接发送请求

快速发送Get请求

res,err := HttpRequest.Get("https://www.baidu.com")

res,err := HttpRequest.Get("https://www.baidu.com","title=baidu")

快速发送Post请求

res,err := HttpRequest.Post("https://www.baidu.com")

res,err := HttpRequest.Post("https://www.baidu.com","title=baidu&type=pdf")

res,err := HttpRequest.Post("https://www.baidu.com",map[string]interface{}{
"title":"baidu",
})

快速发送JSON请求

res,err := HttpRequest.JSON().Post("https://www.baidu.com",map[string]interface{}{
    "title":"baidu",
})

res,err := HttpRequest.JSON().Post("https://www.baidu.com",`{"title":"baidu","type":"pdf"}`)

传递URL参数

你想为URL的查询字符串(query string)传递数据。如:手工构建URL,http://www.baidu.com/index?key=value。HttpRequest允许你使用第2个参数以字符串"id=100&name=github"或map[string]interface{}{"id":10,"name":"github"}字典的形式把数据传递给URL:

手工传参

res,err := req.Get("https://www.baidu.com/index?name=github")

字符串传参

res,err := req.Get("https://www.baidu.com/index?name=github","id=100&type=1")

map传参

res,err := req.Get("https://www.baidu.com/index?name=github",map[string]interface{}{
    "id":10,
    "type":1,
})

响应内容

能读取服务器响应的内容

res,err := req.Post("https://api.github.com/events")

 获取服务器返回的内容

body,err := res.Body()

fmt.Println(string(body))

获取服务器响应状态码

res.StatusCode()

获取服务器响应Headers

res.Headers()

返回一个map[string]string的字典

获取请求响应时间

res.Time()

Json响应内容

HttpRequest内置JSON解码,来解析JSON数据

//Format the json return value
body, err := res.Json() 

fmt.Println(body)

如果JSON解码失败,会返回一个err错误

定制请求头

如果想为请求添加HTTP头部信息,只需要简单的传一个map给SetHeaders方法

req.SetHeaders(map[string]string{
    "Content-Type":"application/json",
    "Source":"api",
})

注:所有header值必须是字符串,SetHeaders可以多次调用,如果Key重复则会覆盖前面设置的值

BasicAuth 认证

如果想为请求添加HTTP头部信息,只需要简单的传一个map给SetHeaders方法

req.SetBasicAuth("username","password")

JSON请求

如果想以json方式发送请求,HttpRequest支持2种方式

设置Header头部信息

req.SetHeaders(map[string]string{"Content-Type":"application/json"})

req.Post("https://www.baidu.com","{\"name\":\"github\"}")

调用req.JSON()内置方法

//直接发磅Json字符串参数
res,err := req.JSON().Post("https://www.baidu.com","{\"name\":\"github\"}")

//自动将Map以Json方式发送参数
res,err := req.JSON().Post("https://www.baidu.com",map[string]interface{}{
    "name":"github"
})

Cookie

req.SetCookies(map[string]string{
    "name":"jason"
})

超时

req.SetTimeout(5)

关闭证书验证

当请求https协议时提示x509: certificate signed by unknown authority时,可关闭证书验证

req.SetTLSClient(&tls.Config{InsecureSkipVerify: true})

调试模式

req.Debug(true)

连接操作

而且还支持连接操作

req := HttpRequest.NewRequest().Debug(true).SetTimeout(5).SetHeader()

Respone对象

获取返回的Response对象
resp.Response()

获取返回码
resp.StatusCode()

获取Body主体信息
resp.Body() 

获取请求耗时
resp.Time() string   单位是毫秒

获取真实Url
res.Url()

  

原文地址:https://www.cnblogs.com/-wenli/p/12344584.html

时间: 2024-10-15 19:31:13

go http请求库HttpRequest的相关文章

Android 各大网络请求库的比较及实战,android请求库实战

自己学习android也有一段时间了,在实际开发中,频繁的接触网络请求,而网络请求的方式很多,最常见的那么几个也就那么几个.本篇文章对常见的网络请求库进行一个总结. HttpUrlConnection 最开始学android的时候用的网络请求是HttpUrlConnection,当时很多东西还不知道,但是在android 2.2及以下版本中HttpUrlConnection存在着一些bug,所以建议在android 2.3以后使用HttpUrlConnection,之前使用HttpClient.

Android进阶笔记01:Android 网络请求库的比较及实战(一)

在实际开发中,有的时候需要频繁的网络请求,而网络请求的方式很多,最常见的也就那么几个.本篇文章对常见的网络请求库进行一个总结. 一.使用HttpUrlConnection: 1. HttpUrlConnection 最开始学android的时候用的网络请求是HttpUrlConnection,当时很多东西还不知道,但是在android2.2及以下版本中HttpUrlConnection存在着一些bug,所以建议在android2.3以后使用HttpUrlConnection,之前使用HttpCl

造轮子 | 怎样设计一个面向协议的 iOS 网络请求库

近期开源了一个面向协议设计的网络请求库 MBNetwork,基于 Alamofire 和 ObjectMapper 实现,目的是简化业务层的网络请求操作. 须要干些啥 对于大部分 App 而言,业务层做一次网络请求通常关心的问题有例如以下几个: 怎样在任何位置发起网络请求. 表单创建. 包括请求地址.请求方式(GET/POST/--).请求头等-- 载入遮罩. 目的是堵塞 UI 交互,同一时候告知用户操作正在进行. 比方提交表单时在提交按钮上显示 "菊花",同一时候使其失效. 载入进度

常见网络请求库汇总

概述: 所有网络库的原理是: 网络请求一般是基于HttpURLConnection和HttpClient进行封装的,也有自己编写Socket实现的,比如ion和OkHttp:请求的执行一般是通过线程池来管理,异步请求得到结果,则通过回调接口接收:并且一般接收结果的回调都通过Handler去在主线程执行 几大网络请求库: Ion:Android Asynchronous Networking and Image Loading Volley:谷歌官方推出的网络请求和图片加载库 Retrofit:S

造轮子 | 如何设计一个面向协议的 iOS 网络请求库

最近开源了一个面向协议设计的网络请求库 MBNetwork,基于 Alamofire 和 ObjectMapper 实现,目的是简化业务层的网络请求操作. 需要干些啥 对于大部分 App 而言,业务层做一次网络请求通常关心的问题有如下几个: 如何在任意位置发起网络请求. 表单创建.包含请求地址.请求方式(GET/POST/--).请求头等-- 加载遮罩.目的是阻塞 UI 交互,同时告知用户操作正在进行.比如提交表单时在提交按钮上显示 "菊花",同时使其失效. 加载进度展示.下载上传图片

Android 各大网络请求库的比较及实战

自己学习android也有一段时间了,在实际开发中,频繁的接触网络请求,而网络请求的方式很多,最常见的那么几个也就那么几个.本篇文章对常见的网络请求库进行一个总结. HttpUrlConnection 最开始学android的时候用的网络请求是HttpUrlConnection,当时很多东西还不知道,但是在android 2.2及以下版本中HttpUrlConnection存在着一些bug,所以建议在android 2.3以后使用HttpUrlConnection,之前使用HttpClient.

自己动手写一个iOS 网络请求库的三部曲[转]

代码示例:https://github.com/johnlui/Swift-On-iOS/blob/master/BuildYourHTTPRequestLibrary 开源项目:Pitaya,适合大文件上传的 HTTP 请求库:https://github.com/johnlui/Pitaya 本系列文章中,我们将尝试使用 NSURLSession 技术构建一个自己的网络请求库. NSURLSession 简介 NSURLSession 是 iOS7 引入的新网络请求接口,在 WWDC2013

swift中第三方网络请求库Alamofire的安装与使用

swift中第三方网络请求库Alamofire的安装与使用 Alamofire是swift中一个比较流行的网络请求库:https://github.com/Alamofire/Alamofire.下面我们就介绍一个这个库的安装与使用. 一.安装包管理工具CocoaPods 由于国内容易被墙,速度也非常的慢,这里我们使用提供的源 http://ruby.taobao.org/ gem sources --remove https://rubygems.org/ gem sources –a htt

浅论Android网络请求库——android-async-http

浅论Android网络请求库——android-async-http Android应用中使用AsyncHttpClient来异步网络数据