// 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 // } func ExampleURL_ResolveReference() { u, err := url.Parse("../../..//search?q=dotnet") if err != nil { log.Fatal(err) } base, err := url.Parse("http://example.com/directory/") if err != nil { log.Fatal(err) } fmt.Println(base.ResolveReference(u)) // Output: // http://example.com/search?q=dotnet }