func (this *HttpDownloader) downloadJson(req *request.Request) *page.Page { var err error var url string if url = req.GetUrl(); len(url) == 0 { mlog.LogInst().LogError(err.Error()) return nil } var resp *http.Response if resp, err = http.Get(url); err != nil { mlog.LogInst().LogError(err.Error()) return nil } defer resp.Body.Close() var body []byte if body, err = ioutil.ReadAll(resp.Body); err != nil { mlog.LogInst().LogError(err.Error()) return nil } var r *simplejson.Json if r, err = simplejson.NewJson(body); err != nil { mlog.LogInst().LogError(err.Error()) return nil } // create Page // json result var p *page.Page = page.NewPage(req). SetBodyStr(string(body)). SetJson(r) return p }
func (this *HttpDownloader) downloadHtml(req *request.Request) *page.Page { var err error var url string if url = req.GetUrl(); len(url) == 0 { return nil } var resp *http.Response if resp, err = http.Get(url); err != nil { mlog.LogInst().LogError(err.Error()) return nil } defer resp.Body.Close() var doc *goquery.Document if doc, err = goquery.NewDocumentFromReader(resp.Body); err != nil { mlog.LogInst().LogError(err.Error()) return nil } var body string if body, err = doc.Html(); err != nil { mlog.LogInst().LogError(err.Error()) return nil } // create Page var p *page.Page = page.NewPage(req). SetBodyStr(body). SetHtmlParser(doc) return p }
func (this *HttpDownloader) Download(req *request.Request) *page.Page { var mtype string var p = page.NewPage(req) mtype = req.GetResponceType() switch mtype { case "html": return this.downloadHtml(p, req) case "json": fallthrough case "jsonp": return this.downloadJson(p, req) case "text": return this.downloadText(p, req) default: mlog.LogInst().LogError("error request type:" + mtype) } return p }