本文整理汇总了Golang中url.URL.Parse方法的典型用法代码示例。如果您正苦于以下问题:Golang URL.Parse方法的具体用法?Golang URL.Parse怎么用?Golang URL.Parse使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类url.URL
的用法示例。
在下文中一共展示了URL.Parse方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Golang代码示例。
示例1: doFollowingRedirects
func (c *Client) doFollowingRedirects(ireq *Request) (r *Response, err os.Error) {
// TODO: if/when we add cookie support, the redirected request shouldn't
// necessarily supply the same cookies as the original.
var base *url.URL
redirectChecker := c.CheckRedirect
if redirectChecker == nil {
redirectChecker = defaultCheckRedirect
}
var via []*Request
if ireq.URL == nil {
return nil, os.NewError("http: nil Request.URL")
}
req := ireq
urlStr := "" // next relative or absolute URL to fetch (after first request)
for redirect := 0; ; redirect++ {
if redirect != 0 {
req = new(Request)
req.Method = ireq.Method
req.Header = make(Header)
req.URL, err = base.Parse(urlStr)
if err != nil {
break
}
if len(via) > 0 {
// Add the Referer header.
lastReq := via[len(via)-1]
if lastReq.URL.Scheme != "https" {
req.Header.Set("Referer", lastReq.URL.String())
}
err = redirectChecker(req, via)
if err != nil {
break
}
}
}
urlStr = req.URL.String()
if r, err = send(req, c.Transport); err != nil {
break
}
if shouldRedirect(r.StatusCode) {
r.Body.Close()
if urlStr = r.Header.Get("Location"); urlStr == "" {
err = os.NewError(fmt.Sprintf("%d response missing Location header", r.StatusCode))
break
}
base = req.URL
via = append(via, req)
continue
}
return
}
method := ireq.Method
err = &url.Error{method[0:1] + strings.ToLower(method[1:]), urlStr, err}
return
}
示例2: URL
// Assumes no custom headers are sent so only needs access to a URL.
// If you plan on sending x-amz-* headers with a query string authorization
// you can use Signature(secret, StringToSign(url, headers, expires)) instead
// Returns an url.URL struct constructed from the Raw URL with the AWS
// query parameters appended at the end.
// Assumes any fragments are not included in url.Raw
func URL(url *url.URL, key, secret, method, expires string) (*url.URL, os.Error) {
sig := Signature(secret, StringToSign(method, url, http.Header{}, expires))
raw := url.Raw
parts := strings.SplitN(raw, "?", 2)
params := parts[1:]
params = append(params, "AWSAccessKeyId="+key)
params = append(params, "Expires="+expires)
params = append(params, "Signature="+sig)
signed := strings.Join(append(parts[:1], strings.Join(params, "&")), "?")
return url.Parse(signed)
}
示例3: getNewUrl
func getNewUrl(url *url.URL) *url.URL {
urlBackend, _ := url.Parse("http://127.0.0.1")
url.Scheme = urlBackend.Scheme
url.Host = urlBackend.Host
return url
}