2015-10-01 19 views
5
req, err := http.NewRequest("GET", "http://example.com", nil) 
req.AddCookie(&http.Cookie{Name: "c", Value: "ccc"}) 
resp, err := client.Do(req) 

Diske önbelleği önbelleğe almalı ve türünü önbellekten geri yükledikten sonra http.Response olarak tutmam gerekiyor. Herhangi bir fikrin var mı?Golang'da http.Response nasıl önbelleğe alınır?

+1

Burada bir programlamayı denediniz mi? Veya büyülü 'func DumpResponse (dosya adı dizesi) hatası' ve 'func Loadesponse (dosya adı dizesi) (* http.Response, error)' ile bir paket bulmayı bekliyor musunuz? – Volker

+0

@Volker Fikir hazırladım, hazır paket değil. – nanolab

+0

'resp 'bir' bayt dizisine dönüştürüp bir dosyaya yaz. http://stackoverflow.com/questions/26372227/go-conversion-between-struct-and-byte-array –

cevap

12

En kolay yol, httputil.DumpResponse ve http.ReadResponse10 kullanmaktır.

See here for an example. (Kodu yerel makinenize kopyalamanız ve Oynatıcı'nın G/Ç'ye izin vermemesi nedeniyle orada çalıştırmanız gerekir)

İstenilen ilk dökümler, isteğe bağlı olarak gövdeyi de boşaltır. daha sonra diske yazabildiğiniz bellek [] bayt. Daha sonra yanıtı diskten (veya sakladığınız yerde) okuyabilir ve http.ReadResponse'ye ilettiğiniz bir bufio.Reader'a sarabilirsiniz.

ReadResponse, yanıtın Request alanının değeri olarak kullanılan bir * http.Request ikinci parametre olarak alır. Eğer sıfır verilirse, geri gönderilen Cevap, İstek alanında GET isteğine sahip olacaktır.

+0

Harika çalışıyor! Teşekkür ederim! – nanolab

İlgili konular