本文整理匯總了Golang中http.Header類的典型用法代碼示例。如果您正苦於以下問題:Golang Header類的具體用法?Golang Header怎麽用?Golang Header使用的例子?那麽, 這裏精選的類代碼示例或許可以為您提供幫助。
在下文中一共展示了Header類的9個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的Golang代碼示例。
示例1: TestWriteHeader
func TestWriteHeader(t *testing.T) {
for level := zlib.NoCompression; level <= zlib.BestCompression; level++ {
r := NewHeaderReader()
w := NewHeaderWriter(level)
for i := 0; i < 100; i++ {
b := new(bytes.Buffer)
gold := http.Header{
"Url": []string{"http://www.google.com/"},
"Method": []string{"get"},
"Version": []string{"http/1.1"},
}
w.WriteHeader(b, gold)
h, err := r.Decode(b.Bytes())
if err != nil {
t.Errorf("(level=%d i=%d) Error: %v", level, i, err)
return
}
if len(h) != len(gold) {
t.Errorf("(level=%d i=%d) Header count = %d (expected %d)", level, i, len(h), len(gold))
}
for k, _ := range h {
if h.Get(k) != gold.Get(k) {
t.Errorf("(level=%d i=%d) %s: %q != %q", level, i, k, h.Get(k), gold.Get(k))
}
}
}
}
}
示例2: defaultRequest
func (self *HTTPClient) defaultRequest() (req *http.Request, err os.Error) {
var h http.Header = map[string][]string{}
req = new(http.Request)
req.Method = self.method
if self.contentType != "" {
headers := map[string]string{"Content-Type": self.contentType}
for k, v := range headers {
h.Add(k, v)
}
}
//Request should have a Header, otherwise the
//transport will not work.
req.Header = h
req.ProtoMajor = 1
req.ProtoMinor = 1
if self.cookie.Name != "" && self.cookie.Value != "" {
req.AddCookie(&http.Cookie{Name: self.cookie.Name, Value: self.cookie.Value})
}
if req.URL, err = url.Parse(self.addr); err != nil {
return
}
return
}
示例3: convert
func convert(host string, r *fakeHttpRequest) (*http.Request, os.Error) {
header := http.Header{}
header.Add("User-Agent", "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_6_8) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/14.0.835.202 Safari/535.1")
header.Add("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8")
theurl, err := url.ParseRequest(r.URL)
if err != nil {
log.Println("Error in url: ", err)
return nil, err
}
out := &http.Request{
Method: r.Method,
URL: theurl,
Proto: "HTTP/1.1",
ProtoMajor: 1,
ProtoMinor: 1,
Header: header,
// Body: byteReadCloser([]byte(r.Body)),
ContentLength: int64(len(r.Body)),
TransferEncoding: []string{},
Close: true,
Host: host,
Form: nil,
MultipartForm: nil,
Trailer: nil,
RemoteAddr: "fake:req",
TLS: nil,
}
if len(r.Body) == 0 {
out.Body = nil
} else {
out.Body = byteReadCloser([]byte(r.Body))
}
return out, nil
}
示例4: getMultiItemRequest
// for hdrs, only include headers listed as optional from 'http://wiki.basho.com/HTTP-Fetch-Object.html'
func getMultiItemRequest(c Client, bucket, key string, hdrs http.Header, parms http.Values) (req *http.Request) {
if hdrs == nil {
hdrs = http.Header{}
}
if hdrs.Get("Accept") == "" {
hdrs.Set("Accept", "multipart/mixed")
}
req = c.request("GET", c.keyPath(bucket, key), hdrs, parms)
return
}
示例5: readFcgiParams
//read the fcgi parameters contained in data, and store them in storage
func readFcgiParams(data []byte, storage http.Header) {
for idx := 0; len(data) > idx; {
keySize, shift := readFcgiParamSize(data, idx)
idx += shift
valSize, shift := readFcgiParamSize(data, idx)
idx += shift
key := data[idx : idx+keySize]
idx += keySize
val := data[idx : idx+valSize]
idx += valSize
storage.Set(string(key), string(val))
}
}
示例6: setBucketRequest
func setBucketRequest(c Client, name string, props Properties) (req *http.Request, err os.Error) {
hdrs := http.Header{}
hdrs.Set("Content-Type", "application/json")
req = c.request("PUT", c.bucketPath(name), hdrs, nil)
ob, err := json.Marshal(map[string]interface{}{"props": props})
if err == nil {
req.ContentLength = int64(len(ob))
req.Body = ioutil.NopCloser(bytes.NewBuffer(ob))
}
return
}
示例7: OutputJSONObject
func OutputJSONObject(writer io.Writer, obj jsonhelper.JSONObject, lastModified *time.Time, etag string, statusCode int, headers http.Header) (int, http.Header, os.Error) {
if statusCode == 0 {
statusCode = 200
}
if headers == nil {
headers = make(http.Header)
}
//headers.Set("Content-Type", wm.MIME_TYPE_JSON)
if lastModified != nil {
headers.Set("Last-Modified", lastModified.Format(http.TimeFormat))
}
if len(etag) > 0 {
headers.Set("ETag", etag)
}
m := jsonhelper.NewJSONObject()
w := json.NewEncoder(writer)
m.Set("status", "success")
m.Set("result", obj)
w.Encode(m)
return statusCode, headers, nil
}
示例8: Yadis
func Yadis(url string) (io.Reader, os.Error) {
fmt.Printf("Search: %s\n", url)
var headers http.Header
headers.Add("Accept", "application/xrds+xml")
r, err := get(url, headers)
if err != nil || r == nil {
fmt.Printf("Yadis: Error in GET\n")
return nil, err
}
// If it is an XRDS document, parse it and return URI
content := r.Header.Get("Content-Type")
if content != "" && strings.HasPrefix(content, "application/xrds+xml") {
fmt.Printf("Document XRDS found\n")
return r.Body, nil
}
// If it is an HTML doc search for meta tags
content = r.Header.Get("Content-Type")
if content != "" && content == "text/html" {
fmt.Printf("Document HTML found\n")
url, err := searchHTMLMeta(r.Body)
if err != nil {
return nil, err
}
return Yadis(url)
}
// If the response contain an X-XRDS-Location header
xrds := r.Header.Get("X-Xrds-Location")
if xrds != "" {
return Yadis(xrds)
}
// If nothing is found try to parse it as a XRDS doc
return nil, nil
}
示例9: newRequestCgi
func newRequestCgi(headers http.Header, body io.Reader) *Request {
var httpheader = make(http.Header)
for header, value := range headers {
if strings.HasPrefix(header, "Http_") {
newHeader := header[5:]
newHeader = strings.Replace(newHeader, "_", "-", -1)
newHeader = http.CanonicalHeaderKey(newHeader)
httpheader[newHeader] = value
}
}
host := httpheader.Get("Host")
method := headers.Get("REQUEST_METHOD")
path := headers.Get("REQUEST_URI")
port := headers.Get("SERVER_PORT")
proto := headers.Get("SERVER_PROTOCOL")
rawurl := "http://" + host + ":" + port + path
url_, _ := url.Parse(rawurl)
useragent := headers.Get("USER_AGENT")
remoteAddr := headers.Get("REMOTE_ADDR")
remotePort, _ := strconv.Atoi(headers.Get("REMOTE_PORT"))
if method == "POST" {
if ctype, ok := headers["CONTENT_TYPE"]; ok {
httpheader["Content-Type"] = ctype
}
if clength, ok := headers["CONTENT_LENGTH"]; ok {
httpheader["Content-Length"] = clength
}
}
//read the cookies
cookies := readCookies(httpheader)
req := Request{
Method: method,
RawURL: rawurl,
URL: url_,
Proto: proto,
Host: host,
UserAgent: useragent,
Body: body,
Headers: httpheader,
RemoteAddr: remoteAddr,
RemotePort: remotePort,
Cookie: cookies,
}
return &req
}