Golang Http请求返回结果处理

在 Go 中 Http 请求的返回结果为 *http.Response 类型,Response.Body 类型为 io.Reader,把请求结果转化为Map需要进行一些处理。

写一个公共方法来进行Response转Map处理:

package util

import (
    "encoding/json"
    "net/http"
    "io/ioutil"
)

func ParseResponse(response *http.Response) (map[string]interface{}, error){
    var result map[string]interface{}
    body,err := ioutil.ReadAll(response.Body)
    if err == nil {
        err = json.Unmarshal(body, &result)
    }

    return result,err
}

然后就可以在请求后使用:

req := http.NewRequest("GET", "http://test.com", nil)
req.Header.Set("Content-type", "application/json")
client := &http.Client{}
response,err := client.Do(req)

if err == nil {
    // 解析Response
    returnMap,err := util.ParseResponse(response)
}

到此这篇关于Golang Http请求返回结果处理的文章就介绍到这了,更多相关Golang Http请求返回结果内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • Golang请求fasthttp实践

    目录 基础API演示 高性能API演示 测试服务 Golang单元测试 测试报告 原计划学完Golang语言HTTP客户端实践之后,就可以继续了,没想到才疏学浅,在搜资料的时候发现除了Golang SDK自带的net/http,还有一个更牛的HttpClient实现github.com/valyala/fasthttp,据说性能是net/http的10倍,我想可能是有点夸张了,后期我会进行测试,以正视听. 在github.com/valyala/fasthttp用到了对象池,为了在高性能测试中减

  • golang编程入门之http请求天气实例

    golang学习第一波,使用http get请求高德天气接口. 一.准备内容: 1.注册高德开发者账号,申请key 2.golang开发工具LiteIDE(可自行百度). 或者https://www.jb51.net/softjc/119086.html 3.大致了解下golang基础语法. 二.直接上代码 因为代码注释非常详尽,故直接上代码. package main import ( "fmt" "io/ioutil" "net/http"

  • golang使用http client发起get和post请求示例

    golang要请求远程网页,可以使用net/http包中的client提供的方法实现.查看了官方网站有一些示例,没有太全面的例子,于是自己整理了一下: get请求 func httpGet() { resp, err := http.Get("http://www.01happy.com/demo/accept.php?id=1") if err != nil { // handle error } defer resp.Body.Close() body, err := ioutil

  • golang NewRequest/gorequest实现http请求的示例代码

    通过go语言实现http请求 http.Post import (     "net/http"     "net/url" ) data := url.Values{"start":{"100"}, "hobby":{"xxxx"}} body := strings.NewReader(data.Encode()) resp, err := http.Post("127.0.

  • golang高性能的http请求 fasthttp详解

    fasthttp是golang下的一个http框架,顾名思义,与原生的http实现相比,它的特点在于快,按照官网的说法,它的客户端和服务端性能比原生有了十倍的提升. 它的高性能主要源自于"复用",通过服务协程和内存变量的复用,节省了大量资源分配的成本. fasthttp 据说是目前golang性能最好的http库,相对于自带的net/http,性能说是有10倍的提升,具体介绍可以看看官方介绍:valyala/fasthttp 1,首先安装fasthttp go get -u githu

  • 详解golang中发送http请求的几种常见情况

    方式一 使用http.Newrequest 先生成http.client -> 再生成 http.request -> 之后提交请求:client.Do(request) -> 处理返回结果,每一步的过程都可以设置一些具体的参数,下面是一个最朴素最基本的例子: //question ???将stdout重定向为response信息??? package main import ( "fmt" "io" "net/http" &q

  • Golang发送http GET请求的示例代码

    使用标准库http来实现 package tools import ( "io/ioutil" "net/http" ) func Get(url string)string{ res, err :=http.Get(url) if err != nil { return "" } robots, err := ioutil.ReadAll(res.Body) res.Body.Close() if err != nil { return &qu

  • golang http请求封装代码

    在GOPATH 中创建 utils 文件夹 放置这两个文件 http.go package utils import ( "crypto/tls" "encoding/json" "errors" "fmt" "io/ioutil" "net/http" "net/url" "strings" "sync" ) var ( GE

  • 详解golang开发中http请求redirect的问题

    这两天在开发项目的时候遇到了一个问题,请求了一个URL,它会302到另一个地址,本意上只是想检查这个URL是否会做3XX的redirect跳转,结果每次reqeust都会返回最后一跳的结果.后来就看了下源码,了解下请求跳转的机制 实现代码 看下实现的简单代码 func main() { client := &http.Client{} url := "http://www.qq.com" reqest, err := http.NewRequest("GET"

  • Golang实现HTTP编程请求和响应

    请求: HTTP 请求报文由请求行.请求头部.空行.请求包体4个部分组成,如下图所示: 请求行: 请求行由方法字段.URL 字段 和HTTP 协议版本字段 3个部分组成,他们之间使用空格隔开.常用的 HTTP 请求方法有 GET.POST. GET: 当客户端要从服务器中读取某个资源时,使用GET 方法.GET 方法要求服务器将URL 定位的资源放在响应报文的数据部分,回送给客户端,即向服务器请求某个资源. 使用GET方法时,请求参数和对应的值附加在 URL 后面,利用一个问号(“?”)代表UR

  • Golang 发送http请求时设置header的实现

    某天,在需要抓取某个网页信息的时候,需要在header中增加一些信息,于是搜索了一下,如何在golang发起的http请求中设置header. package main import ( "fmt" "io/ioutil" "net/http" "os" "encoding/json" ) func main() { //生成client 参数为默认 client := &http.Client{}

随机推荐