2012-02-18 11:48:33 +11:00
|
|
|
// Copyright 2012 The Go Authors. All rights reserved.
|
|
|
|
|
// Use of this source code is governed by a BSD-style
|
|
|
|
|
// license that can be found in the LICENSE file.
|
|
|
|
|
|
|
|
|
|
package url_test
|
|
|
|
|
|
|
|
|
|
import (
|
|
|
|
|
"fmt"
|
|
|
|
|
"log"
|
2014-11-12 14:27:27 -08:00
|
|
|
"net/http"
|
|
|
|
|
"net/http/httputil"
|
2012-02-18 11:48:33 +11:00
|
|
|
"net/url"
|
2014-11-12 14:27:27 -08:00
|
|
|
"strings"
|
2012-02-18 11:48:33 +11:00
|
|
|
)
|
|
|
|
|
|
|
|
|
|
func ExampleValues() {
|
|
|
|
|
v := url.Values{}
|
|
|
|
|
v.Set("name", "Ava")
|
|
|
|
|
v.Add("friend", "Jess")
|
|
|
|
|
v.Add("friend", "Sarah")
|
|
|
|
|
v.Add("friend", "Zoe")
|
|
|
|
|
// v.Encode() == "name=Ava&friend=Jess&friend=Sarah&friend=Zoe"
|
|
|
|
|
fmt.Println(v.Get("name"))
|
|
|
|
|
fmt.Println(v.Get("friend"))
|
|
|
|
|
fmt.Println(v["friend"])
|
|
|
|
|
// Output:
|
|
|
|
|
// Ava
|
|
|
|
|
// Jess
|
|
|
|
|
// [Jess Sarah Zoe]
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func ExampleURL() {
|
|
|
|
|
u, err := url.Parse("http://bing.com/search?q=dotnet")
|
|
|
|
|
if err != nil {
|
|
|
|
|
log.Fatal(err)
|
|
|
|
|
}
|
|
|
|
|
u.Scheme = "https"
|
|
|
|
|
u.Host = "google.com"
|
|
|
|
|
q := u.Query()
|
|
|
|
|
q.Set("q", "golang")
|
|
|
|
|
u.RawQuery = q.Encode()
|
|
|
|
|
fmt.Println(u)
|
|
|
|
|
// Output: https://google.com/search?q=golang
|
|
|
|
|
}
|
2014-11-12 14:27:27 -08:00
|
|
|
|
|
|
|
|
func ExampleURL_opaque() {
|
|
|
|
|
// Sending a literal '%' in an HTTP request's Path
|
|
|
|
|
req := &http.Request{
|
|
|
|
|
Method: "GET",
|
2015-06-11 16:49:38 +03:00
|
|
|
Host: "example.com", // takes precedence over URL.Host
|
2014-11-12 14:27:27 -08:00
|
|
|
URL: &url.URL{
|
|
|
|
|
Host: "ignored",
|
|
|
|
|
Scheme: "https",
|
|
|
|
|
Opaque: "/%2f/",
|
|
|
|
|
},
|
|
|
|
|
Header: http.Header{
|
|
|
|
|
"User-Agent": {"godoc-example/0.1"},
|
|
|
|
|
},
|
|
|
|
|
}
|
|
|
|
|
out, err := httputil.DumpRequestOut(req, true)
|
|
|
|
|
if err != nil {
|
|
|
|
|
log.Fatal(err)
|
|
|
|
|
}
|
|
|
|
|
fmt.Println(strings.Replace(string(out), "\r", "", -1))
|
|
|
|
|
// Output:
|
|
|
|
|
// GET /%2f/ HTTP/1.1
|
|
|
|
|
// Host: example.com
|
|
|
|
|
// User-Agent: godoc-example/0.1
|
|
|
|
|
// Accept-Encoding: gzip
|
|
|
|
|
//
|
|
|
|
|
}
|