import "code.google.com/p/appengine-go/appengine/urlfetch"
urlfetch提供了一个http.RoundTripper接口的实现,用于抓取URL页面。
var ErrTruncatedBody = errors.New("urlfetch: truncated body")
如果response的主体被App Engine代理截断,最后一次Read()就会返回本错误。
func Client(context appengine.Context) *http.Client
Client返回一个使用urlfetch.Transport的*http.Client,该client采用5秒deadline,并会检查SSL证书的合法性。
type Transport struct { Context appengine.Context Deadline time.Duration // 0表示默认的5秒 // 控制app是否会检查https链接的证书合法性 // 只有格式正确、有权威机构签名并与主机名匹配的证书才合法 // 如设为假则只有证书合法才会发送请求,设为真不检查证书 AllowInvalidServerCertificate bool}
Transport是用于App Engine的http.RoundTripper 接口实现。使用者一般避免直接使用本类型。
func (t *Transport) RoundTrip(req *http.Request) (res *http.Response, err error)
RoundTrip发出request并返回该请求的response。如果request不支持或者抓取失败都会返回错误。注意HTTP返回码为5xx、403、404等并非错误,错误码仍会设为nil。