func (this *HttpDownloader) downloadJson(p *page.Page, req *context.Request) *page.Page { var err error p, destbody := this.downloadFile(p, req) if !p.IsSucc() { return p } var body []byte body = []byte(destbody) mtype := req.GetResponceType() if mtype == "jsonp" { tmpstr := utils.JsonpToJson(destbody) body = []byte(tmpstr) } var r *simplejson.Json if r, err = simplejson.NewJson(body); err != nil { log.Error(string(body) + "\t" + err.Error()) p.SetStatus(true, err.Error()) return p } // json result p.SetBodyStr(string(body)).SetJson(r).SetStatus(false, "") return p }
func (this *HttpDownloader) Download(req *context.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: log.Error("error request type:" + mtype) } return p }