// 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" | |
"net/http" | |
"net/http/httputil" | |
"net/url" | |
"strings" | |
) | |
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 | |
} | |
func ExampleURL_roundtrip() { | |
// Parse + String preserve the original encoding. | |
u, err := url.Parse("https://example.com/foo%2fbar") | |
if err != nil { | |
log.Fatal(err) | |
} | |
fmt.Println(u.Path) | |
fmt.Println(u.RawPath) | |
fmt.Println(u.String()) | |
// Output: | |
// /foo/bar | |
// /foo%2fbar | |
// https://example.com/foo%2fbar | |
} | |
func ExampleURL_opaque() { | |
// Sending a literal '%' in an HTTP request's Path | |
req := &http.Request{ | |
Method: "GET", | |
Host: "example.com", // takes precedence over URL.Host | |
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 | |
// | |
} |