本文整理汇总了Golang中github.com/garyburd/twister/web.Header.ParseHttpHeader方法的典型用法代码示例。如果您正苦于以下问题:Golang Header.ParseHttpHeader方法的具体用法?Golang Header.ParseHttpHeader怎么用?Golang Header.ParseHttpHeader使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类github.com/garyburd/twister/web.Header
的用法示例。
在下文中一共展示了Header.ParseHttpHeader方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Golang代码示例。
示例1: prepare
func (t *transaction) prepare() (err error) {
method, requestURI, version, err := readRequestLine(t.br)
if err != nil {
return err
}
header := web.Header{}
err = header.ParseHttpHeader(t.br)
if err != nil {
return err
}
u, err := url.ParseRequestURI(requestURI)
if err != nil {
return err
}
if u.Host == "" {
u.Host = header.Get(web.HeaderHost)
if u.Host == "" {
u.Host = t.server.DefaultHost
}
}
if t.server.Secure {
u.Scheme = "https"
} else {
u.Scheme = "http"
}
req, err := web.NewRequest(t.conn.RemoteAddr().String(), method, requestURI, version, u, header)
if err != nil {
return
}
t.req = req
if s := req.Header.Get(web.HeaderExpect); s != "" {
t.write100Continue = strings.ToLower(s) == "100-continue"
}
connection := strings.ToLower(req.Header.Get(web.HeaderConnection))
if version >= web.ProtocolVersion(1, 1) {
t.closeAfterResponse = connection == "close"
} else if version == web.ProtocolVersion(1, 0) && req.ContentLength >= 0 {
t.closeAfterResponse = connection != "keep-alive"
} else {
t.closeAfterResponse = true
}
req.Responder = t
te := header.GetList(web.HeaderTransferEncoding)
chunked := len(te) > 0 && te[0] == "chunked"
switch {
case req.Method == "GET" || req.Method == "HEAD":
req.Body = identityReader{t}
t.requestConsumed = true
case chunked:
req.Body = chunkedReader{t}
case req.ContentLength >= 0:
req.Body = identityReader{t}
t.requestAvail = req.ContentLength
t.requestConsumed = req.ContentLength == 0
default:
req.Body = identityReader{t}
t.closeAfterResponse = true
}
return nil
}