golang net/url values

package main

import (
    "fmt"
    "net/url"
)

func main() {
    values, err := url.ParseRequestURI("https://www.baidu.com/s?wd=%E6%90%9C%E7%B4%A2&rsv_spt=1&issp=1&f=8&rsv_bp=0&rsv_idx=2&ie=utf-8&tn=baiduhome_pg&rsv_enter=1&rsv_sug3=7&rsv_sug1=6")

    fmt.Println(values)
    // 会打印出https://www.baidu.com/s?wd=%E6%90%9C%E7%B4%A2&rsv_spt=1&issp=1&f=8&rsv_bp=0&rsv_idx=2&ie=utf-8&tn=baiduhome_pg&rsv_enter=1&rsv_sug3=7&rsv_sug1=6

    if err != nil {
        fmt.Println(err)
    }

    urlParam := values.RawQuery
    fmt.Println(urlParam) // 打印出wd=%E6%90%9C%E7%B4%A2&rsv_spt=1&issp=1&f=8&rsv_bp=0&rsv_idx=2&ie=utf-8&tn=baiduhome_pg&rsv_enter=1&rsv_sug3=7&rsv_sug1=6

    // ParseQuery传入的必须是参数,也就是url里边的RawQuery的值 就是url?之后的path
    fmt.Println(url.ParseQuery(urlParam))
    //会打印出map[tn:[baiduhome_pg] rsv_enter:[1] rsv_sug3:[7] rsv_sug1:[6] f:[8] rsv_bp:[0] ie:[utf-8] rsv_idx:[2] wd:[搜索] rsv_spt:[1] issp:[1]] <nil>

    //这里url.Query()直接就解析成map了,url.ParseQuery()反而多了一步,果断用这个方法
    urlValue := values.Query() // 和下面的c变量类型相同都为url.Values类型,有相同的属性方法
    fmt.Println(urlValue)
    // 会打印出map[rsv_bp:[0] ie:[utf-8] tn:[baiduhome_pg] rsv_enter:[1] rsv_sug3:[7] rsv_sug1:[6] f:[8] rsv_spt:[1] issp:[1] rsv_idx:[2] wd:[搜索]]

    //val := url.Values{}
    c := url.Values{"method": {"get"}, "id": {"1"}}
    fmt.Println(c.Encode()) // 打印出id=1&method=get
    c.Get("method")         // 获取到method的值为get

    c.Set("method", "post") // 修改method的值为post

    c.Del("method") // 删除method元素

    c.Add("new", "hi") // 添加新的元素new:hi
}
时间: 2024-11-08 20:37:44

golang net/url values的相关文章

老9乐购下载最高邀请码 25295678,golang net/url包使用

.net/url简介import "net/url"url包解析URL并实现查询转义 URL结构体// Note that the Path field is stored in decoded form: /%47%6f%2f becomes /Go/.// A consequence is that it is impossible to tell which slashes in the Path were// slashes in the raw URL and which w

用Golang让自己的电脑自动登录“上网管理”系统

用Golang让自己的电脑自动登录 1.缘起 大天朝的网络一般都是只对某些人开放的.上行下效,同样的措施也作用在我们的教育网上.我想不出来,为什么很多领导的总有这样的恶趣味(如果做的到,他们恨不得监控下属的一言一行).每次在我们的教育网内上网,都必须经过一个“上网管理”系统.当然必定是需要“实名登记”的.对于我这样的老老实实的已进化的猴子来说,这个显然很是多余,每次开机需要登录一次就很是不爽.那么就发挥主观能动性,让它自动化吧. 2.逻辑 程序逻辑非常简单,首先GET一个网页(不好意思选用了ba

[Golang]你处于使用Go语言的哪个层次,来测测吧

?? Francesc (@francesc) 是 Go 核心团队的一员, 是提倡 Google Cloud 平台的开发者. 他是一个编程语言的爱好者, Google的技术指导大师, Go tour的创造者之一. 这个讨论的灵感来自于另一个 Raquel Vélez 在 JSConf. Slides 的讨论,这个讨论已经发到了这里. Sourcegraph 是下一代编程协作工具, 用于搜索, 探索, 和审查代码. 我们参加GopherCon India 来分享我们是怎样使用 Go 并学习别人是怎

golang Http Request

一起看一下golang的HTTP包怎么write Request信息 先看一下看golang http Request的struct,不解释,慢慢看(HTTP权威指南,RFC文档) type Request struct { // Method specifies the HTTP method (GET, POST, PUT, etc.). // For client requests an empty string means GET. Method string // URL specif

golang的http请求

import ( "fmt" "io/ioutil" "net/http" "net/url" "strings" ) func httpGet() { resp, err := http.Get("http://www.baidu.com") if err != nil { // handle error } defer resp.Body.Close() body, err := i

使用golang来设计我们的Ubuntu Scope

我们知道golang越来越被很多的开发者来开发应用.go语言也可以用于开发Ubuntu Scope.在今天的教程中,我们将详细介绍如何使用go语言来开发我们的Scope.这对于很多的不太熟悉C/C++的开发者来说,无疑是一个福音.对我来说,这个语言也是比较新的.如果大家想学习golang的话,建议大家阅读"Go by Example". IDE选择 由于一些原因,目前我们的Ubuntu SDK并没有支持go语言的Scope的开发.可喜的是,我们可以使用Command Line来完成我们

golang原生api实现get和post

服务端 在golang中,实现一个普通的http接口可以处理get请求和x-www-form-urlencoded类型的post请求,而如果想实现处理json数据的post请求,则需要用另外的方式实现,接收的参数要从request.Body中读取: getpost.go package main import ( "net/http" "encoding/json" "log" ) func main() { http.HandleFunc(&q

golang 调用顺丰API接口测试

golang 调用顺丰API接口首先得去https://qiao.sf-express.com/pages/service/API.html这个网站申请注册,拿到我的API接口如下图所示 之后就可以按照文档生成xml请求信息 为了方便快速搭建 golang 的结构粘贴如下 type Rquest struct { XMLName xml.Name `xml:"Request"` Service string `xml:"service,attr"` Lang str

golang爬虫登录(四-进阶版)以及利用fiddler抓包

前几篇文章摸索了如何用golang模拟登录:对简单的情况,甚至可以用GET方式代替POST方式登录. 但现在想抓取公司泛微OA系统的网页,就遇到一些困难. 难点: 1.登录页POST提交后,会有http 302跳转.后来发现不是问题,因为用http.Client.Do会自动处理跳转. 2.网站使用了FrameSet,还有大量jquery动态生成加载内容,这个处理起来比较困难,链接也是JS生成,只能针对具体问题具体分析. 3.用chrome控制台抓到的header提交不成功,于是想到fiddler