Documentation
¶
Index ¶
- Constants
- Variables
- type Client
- func (c *Client) AddCommonQueryParam(key, value string) *Client
- func (c *Client) AddCommonQueryParams(key string, values ...string) *Client
- func (c *Client) AddCommonRetryCondition(condition RetryConditionFunc) *Client
- func (c *Client) AddCommonRetryHook(hook RetryHookFunc) *Client
- func (c *Client) ClearCookies() *Client
- func (c *Client) Clone() *Client
- func (c *Client) Delete(url ...string) *Request
- func (c *Client) DevMode() *Client
- func (c *Client) DisableAllowGetMethodPayload() *Client
- func (c *Client) DisableAutoDecode() *Client
- func (c *Client) DisableAutoDecompress() *Client
- func (c *Client) DisableAutoReadResponse() *Client
- func (c *Client) DisableCompression() *Client
- func (c *Client) DisableDebugLog() *Client
- func (c *Client) DisableDumpAll() *Client
- func (c *Client) DisableForceHttpVersion() *Client
- func (c *Client) DisableH2C() *Client
- func (c *Client) DisableHTTP3() *Client
- func (c *Client) DisableInsecureSkipVerify() *Client
- func (c *Client) DisableKeepAlives() *Client
- func (c *Client) DisableTraceAll() *Client
- func (c *Client) Do(req *http.Request) (*http.Response, error)
- func (c *Client) EnableAllowGetMethodPayload() *Client
- func (c *Client) EnableAutoDecode() *Client
- func (c *Client) EnableAutoDecompress() *Client
- func (c *Client) EnableAutoReadResponse() *Client
- func (c *Client) EnableCompression() *Client
- func (c *Client) EnableDebugLog() *Client
- func (c *Client) EnableDumpAll() *Client
- func (c *Client) EnableDumpAllAsync() *Client
- func (c *Client) EnableDumpAllTo(output io.Writer) *Client
- func (c *Client) EnableDumpAllToFile(filename string) *Client
- func (c *Client) EnableDumpAllWithoutBody() *Client
- func (c *Client) EnableDumpAllWithoutHeader() *Client
- func (c *Client) EnableDumpAllWithoutRequest() *Client
- func (c *Client) EnableDumpAllWithoutRequestBody() *Client
- func (c *Client) EnableDumpAllWithoutResponse() *Client
- func (c *Client) EnableDumpAllWithoutResponseBody() *Client
- func (c *Client) EnableDumpEachRequest() *Client
- func (c *Client) EnableDumpEachRequestWithoutBody() *Client
- func (c *Client) EnableDumpEachRequestWithoutHeader() *Client
- func (c *Client) EnableDumpEachRequestWithoutRequest() *Client
- func (c *Client) EnableDumpEachRequestWithoutRequestBody() *Client
- func (c *Client) EnableDumpEachRequestWithoutResponse() *Client
- func (c *Client) EnableDumpEachRequestWithoutResponseBody() *Client
- func (c *Client) EnableForceHTTP1() *Client
- func (c *Client) EnableForceHTTP2() *Client
- func (c *Client) EnableForceHTTP3() *Client
- func (c *Client) EnableH2C() *Client
- func (c *Client) EnableHTTP3() *Client
- func (c *Client) EnableInsecureSkipVerify() *Client
- func (c *Client) EnableKeepAlives() *Client
- func (c *Client) EnableTraceAll() *Client
- func (c *Client) Get(url ...string) *Request
- func (c *Client) GetClient() *http.Client
- func (c *Client) GetCookies(url string) ([]*http.Cookie, error)
- func (c *Client) GetLogger() Logger
- func (c *Client) GetTLSClientConfig() *tls.Config
- func (c *Client) GetTransport() *Transport
- func (c *Client) Head(url ...string) *Request
- func (c *Client) ImpersonateChrome() *Client
- func (c *Client) ImpersonateFirefox() *Client
- func (c *Client) ImpersonateSafari() *Client
- func (c *Client) NewParallelDownload(url string) *ParallelDownload
- func (c *Client) NewRequest() *Request
- func (c *Client) OnAfterResponse(m ResponseMiddleware) *Client
- func (c *Client) OnBeforeRequest(m RequestMiddleware) *Client
- func (c *Client) OnError(hook ErrorHook) *Client
- func (c *Client) Options(url ...string) *Request
- func (c *Client) Patch(url ...string) *Request
- func (c *Client) Post(url ...string) *Request
- func (c *Client) Put(url ...string) *Request
- func (c *Client) R() *Request
- func (c *Client) SetAutoDecodeAllContentType() *Client
- func (c *Client) SetAutoDecodeContentType(contentTypes ...string) *Client
- func (c *Client) SetAutoDecodeContentTypeFunc(fn func(contentType string) bool) *Client
- func (c *Client) SetBaseURL(u string) *Client
- func (c *Client) SetCertFromFile(certFile, keyFile string) *Client
- func (c *Client) SetCerts(certs ...tls.Certificate) *Client
- func (c *Client) SetCommonBasicAuth(username, password string) *Client
- func (c *Client) SetCommonBearerAuthToken(token string) *Client
- func (c *Client) SetCommonContentType(ct string) *Client
- func (c *Client) SetCommonCookies(cookies ...*http.Cookie) *Client
- func (c *Client) SetCommonDigestAuth(username, password string) *Client
- func (c *Client) SetCommonDumpOptions(opt *DumpOptions) *Client
- func (c *Client) SetCommonError(err interface{}) *Clientdeprecated
- func (c *Client) SetCommonErrorResult(err interface{}) *Client
- func (c *Client) SetCommonFormData(data map[string]string) *Client
- func (c *Client) SetCommonFormDataFromValues(data urlpkg.Values) *Client
- func (c *Client) SetCommonHeader(key, value string) *Client
- func (c *Client) SetCommonHeaderNonCanonical(key, value string) *Client
- func (c *Client) SetCommonHeaderOrder(keys ...string) *Client
- func (c *Client) SetCommonHeaders(hdrs map[string]string) *Client
- func (c *Client) SetCommonHeadersNonCanonical(hdrs map[string]string) *Client
- func (c *Client) SetCommonPathParam(key, value string) *Client
- func (c *Client) SetCommonPathParams(pathParams map[string]string) *Client
- func (c *Client) SetCommonPseudoHeaderOder(keys ...string) *Client
- func (c *Client) SetCommonQueryParam(key, value string) *Client
- func (c *Client) SetCommonQueryParams(params map[string]string) *Client
- func (c *Client) SetCommonQueryString(query string) *Client
- func (c *Client) SetCommonRetryBackoffInterval(min, max time.Duration) *Client
- func (c *Client) SetCommonRetryCondition(condition RetryConditionFunc) *Client
- func (c *Client) SetCommonRetryCount(count int) *Client
- func (c *Client) SetCommonRetryFixedInterval(interval time.Duration) *Client
- func (c *Client) SetCommonRetryHook(hook RetryHookFunc) *Client
- func (c *Client) SetCommonRetryInterval(getRetryIntervalFunc GetRetryIntervalFunc) *Client
- func (c *Client) SetCookieJar(jar http.CookieJar) *Client
- func (c *Client) SetCookieJarFactory(factory func() *cookiejar.Jar) *Client
- func (c *Client) SetDial(fn func(ctx context.Context, network, addr string) (net.Conn, error)) *Client
- func (c *Client) SetDialTLS(fn func(ctx context.Context, network, addr string) (net.Conn, error)) *Client
- func (c *Client) SetHTTP2ConnectionFlow(flow uint32) *Client
- func (c *Client) SetHTTP2HeaderPriority(priority http2.PriorityParam) *Client
- func (c *Client) SetHTTP2MaxHeaderListSize(max uint32) *Client
- func (c *Client) SetHTTP2PingTimeout(timeout time.Duration) *Client
- func (c *Client) SetHTTP2PriorityFrames(frames ...http2.PriorityFrame) *Client
- func (c *Client) SetHTTP2ReadIdleTimeout(timeout time.Duration) *Client
- func (c *Client) SetHTTP2SettingsFrame(settings ...http2.Setting) *Client
- func (c *Client) SetHTTP2StrictMaxConcurrentStreams(strict bool) *Client
- func (c *Client) SetHTTP2WriteByteTimeout(timeout time.Duration) *Client
- func (c *Client) SetJsonMarshal(fn func(v interface{}) ([]byte, error)) *Client
- func (c *Client) SetJsonUnmarshal(fn func(data []byte, v interface{}) error) *Client
- func (c *Client) SetLogger(log Logger) *Client
- func (c *Client) SetMultipartBoundaryFunc(fn func() string) *Client
- func (c *Client) SetOutputDirectory(dir string) *Client
- func (c *Client) SetProxy(proxy func(*http.Request) (*urlpkg.URL, error)) *Client
- func (c *Client) SetProxyURL(proxyUrl string) *Client
- func (c *Client) SetRedirectPolicy(policies ...RedirectPolicy) *Client
- func (c *Client) SetResponseBodyTransformer(...) *Client
- func (c *Client) SetResultStateCheckFunc(fn func(resp *Response) ResultState) *Client
- func (c *Client) SetRootCertFromString(pemContent string) *Client
- func (c *Client) SetRootCertsFromFile(pemFiles ...string) *Client
- func (c *Client) SetScheme(scheme string) *Client
- func (c *Client) SetTLSClientConfig(conf *tls.Config) *Client
- func (c *Client) SetTLSFingerprint(clientHelloID utls.ClientHelloID) *Client
- func (c *Client) SetTLSFingerprint360() *Client
- func (c *Client) SetTLSFingerprintAndroid() *Client
- func (c *Client) SetTLSFingerprintChrome() *Client
- func (c *Client) SetTLSFingerprintEdge() *Client
- func (c *Client) SetTLSFingerprintFirefox() *Client
- func (c *Client) SetTLSFingerprintIOS() *Client
- func (c *Client) SetTLSFingerprintQQ() *Client
- func (c *Client) SetTLSFingerprintRandomized() *Client
- func (c *Client) SetTLSFingerprintSafari() *Client
- func (c *Client) SetTLSHandshake(...) *Client
- func (c *Client) SetTLSHandshakeTimeout(timeout time.Duration) *Client
- func (c *Client) SetTimeout(d time.Duration) *Client
- func (c *Client) SetUnixSocket(file string) *Client
- func (c *Client) SetUserAgent(userAgent string) *Client
- func (c *Client) SetXmlMarshal(fn func(v interface{}) ([]byte, error)) *Client
- func (c *Client) SetXmlUnmarshal(fn func(data []byte, v interface{}) error) *Client
- func (c *Client) WrapRoundTrip(wrappers ...RoundTripWrapper) *Client
- func (c *Client) WrapRoundTripFunc(funcs ...RoundTripWrapperFunc) *Client
- type ContentDisposition
- type DownloadCallback
- type DownloadInfo
- type DumpOptions
- type ErrorHook
- type FileUpload
- type GetContentFunc
- type GetRetryIntervalFunc
- type HttpRoundTripFunc
- type HttpRoundTripWrapper
- type HttpRoundTripWrapperFunc
- type Logger
- type ParallelDownload
- func (pd *ParallelDownload) Do(ctx ...context.Context) error
- func (pd *ParallelDownload) SetConcurrency(concurrency int) *ParallelDownload
- func (pd *ParallelDownload) SetFileMode(perm os.FileMode) *ParallelDownload
- func (pd *ParallelDownload) SetOutput(output io.Writer) *ParallelDownload
- func (pd *ParallelDownload) SetOutputFile(filename string) *ParallelDownload
- func (pd *ParallelDownload) SetSegmentSize(segmentSize int64) *ParallelDownload
- func (pd *ParallelDownload) SetTempRootDir(tempRootDir string) *ParallelDownload
- type RedirectPolicy
- func AllowedDomainRedirectPolicy(hosts ...string) RedirectPolicy
- func AllowedHostRedirectPolicy(hosts ...string) RedirectPolicy
- func AlwaysCopyHeaderRedirectPolicy(headers ...string) RedirectPolicy
- func DefaultRedirectPolicy() RedirectPolicy
- func MaxRedirectPolicy(noOfRedirect int) RedirectPolicy
- func NoRedirectPolicy() RedirectPolicy
- func SameDomainRedirectPolicy() RedirectPolicy
- func SameHostRedirectPolicy() RedirectPolicy
- type Request
- func (r *Request) AddQueryParam(key, value string) *Request
- func (r *Request) AddQueryParams(key string, values ...string) *Request
- func (r *Request) AddRetryCondition(condition RetryConditionFunc) *Request
- func (r *Request) AddRetryHook(hook RetryHookFunc) *Request
- func (r *Request) Context() context.Context
- func (r *Request) Delete(url string) (*Response, error)
- func (r *Request) DisableAutoReadResponse() *Request
- func (r *Request) DisableForceChunkedEncoding() *Request
- func (r *Request) DisableForceMultipart() *Request
- func (r *Request) DisableTrace() *Request
- func (r *Request) Do(ctx ...context.Context) *Response
- func (r *Request) EnableAutoReadResponse() *Request
- func (r *Request) EnableCloseConnection() *Request
- func (r *Request) EnableDump() *Request
- func (r *Request) EnableDumpTo(output io.Writer) *Request
- func (r *Request) EnableDumpToFile(filename string) *Request
- func (r *Request) EnableDumpWithoutBody() *Request
- func (r *Request) EnableDumpWithoutHeader() *Request
- func (r *Request) EnableDumpWithoutRequest() *Request
- func (r *Request) EnableDumpWithoutRequestBody() *Request
- func (r *Request) EnableDumpWithoutResponse() *Request
- func (r *Request) EnableDumpWithoutResponseBody() *Request
- func (r *Request) EnableForceChunkedEncoding() *Request
- func (r *Request) EnableForceMultipart() *Request
- func (r *Request) EnableTrace() *Request
- func (r *Request) Get(url string) (*Response, error)
- func (r *Request) GetClient() *Client
- func (r *Request) GetContextData(key any) any
- func (r *Request) Head(url string) (*Response, error)
- func (r *Request) HeaderToString() string
- func (r *Request) MustDelete(url string) *Response
- func (r *Request) MustGet(url string) *Response
- func (r *Request) MustHead(url string) *Response
- func (r *Request) MustOptions(url string) *Response
- func (r *Request) MustPatch(url string) *Response
- func (r *Request) MustPost(url string) *Response
- func (r *Request) MustPut(url string) *Response
- func (r *Request) OnAfterResponse(m ResponseMiddleware) *Request
- func (r *Request) Options(url string) (*Response, error)
- func (r *Request) Patch(url string) (*Response, error)
- func (r *Request) Post(url string) (*Response, error)
- func (r *Request) Put(url string) (*Response, error)
- func (r *Request) Send(method, url string) (*Response, error)
- func (r *Request) SetBasicAuth(username, password string) *Request
- func (r *Request) SetBearerAuthToken(token string) *Request
- func (r *Request) SetBody(body interface{}) *Request
- func (r *Request) SetBodyBytes(body []byte) *Request
- func (r *Request) SetBodyJsonBytes(body []byte) *Request
- func (r *Request) SetBodyJsonMarshal(v interface{}) *Request
- func (r *Request) SetBodyJsonString(body string) *Request
- func (r *Request) SetBodyString(body string) *Request
- func (r *Request) SetBodyXmlBytes(body []byte) *Request
- func (r *Request) SetBodyXmlMarshal(v interface{}) *Request
- func (r *Request) SetBodyXmlString(body string) *Request
- func (r *Request) SetClient(client *Client) *Request
- func (r *Request) SetContentType(contentType string) *Request
- func (r *Request) SetContext(ctx context.Context) *Request
- func (r *Request) SetContextData(key, val any) *Request
- func (r *Request) SetCookies(cookies ...*http.Cookie) *Request
- func (r *Request) SetDigestAuth(username, password string) *Requestdeprecated
- func (r *Request) SetDownloadCallback(callback DownloadCallback) *Request
- func (r *Request) SetDownloadCallbackWithInterval(callback DownloadCallback, minInterval time.Duration) *Request
- func (r *Request) SetDumpOptions(opt *DumpOptions) *Request
- func (r *Request) SetError(err interface{}) *Requestdeprecated
- func (r *Request) SetErrorResult(err interface{}) *Request
- func (r *Request) SetFile(paramName, filePath string) *Request
- func (r *Request) SetFileBytes(paramName, filename string, content []byte) *Request
- func (r *Request) SetFileReader(paramName, filename string, reader io.Reader) *Request
- func (r *Request) SetFileUpload(uploads ...FileUpload) *Request
- func (r *Request) SetFiles(files map[string]string) *Request
- func (r *Request) SetFormData(data map[string]string) *Request
- func (r *Request) SetFormDataAnyType(data map[string]interface{}) *Request
- func (r *Request) SetFormDataFromValues(data urlpkg.Values) *Request
- func (r *Request) SetHeader(key, value string) *Request
- func (r *Request) SetHeaderNonCanonical(key, value string) *Request
- func (r *Request) SetHeaderOrder(keys ...string) *Request
- func (r *Request) SetHeaders(hdrs map[string]string) *Request
- func (r *Request) SetHeadersNonCanonical(hdrs map[string]string) *Request
- func (r *Request) SetOrderedFormData(kvs ...string) *Request
- func (r *Request) SetOutput(output io.Writer) *Request
- func (r *Request) SetOutputFile(file string) *Request
- func (r *Request) SetPathParam(key, value string) *Request
- func (r *Request) SetPathParams(params map[string]string) *Request
- func (r *Request) SetPseudoHeaderOrder(keys ...string) *Request
- func (r *Request) SetQueryParam(key, value string) *Request
- func (r *Request) SetQueryParams(params map[string]string) *Request
- func (r *Request) SetQueryParamsAnyType(params map[string]interface{}) *Request
- func (r *Request) SetQueryString(query string) *Request
- func (r *Request) SetResult(result interface{}) *Requestdeprecated
- func (r *Request) SetRetryBackoffInterval(min, max time.Duration) *Request
- func (r *Request) SetRetryCondition(condition RetryConditionFunc) *Request
- func (r *Request) SetRetryCount(count int) *Request
- func (r *Request) SetRetryFixedInterval(interval time.Duration) *Request
- func (r *Request) SetRetryHook(hook RetryHookFunc) *Request
- func (r *Request) SetRetryInterval(getRetryIntervalFunc GetRetryIntervalFunc) *Request
- func (r *Request) SetSuccessResult(result interface{}) *Request
- func (r *Request) SetURL(url string) *Request
- func (r *Request) SetUploadCallback(callback UploadCallback) *Request
- func (r *Request) SetUploadCallbackWithInterval(callback UploadCallback, minInterval time.Duration) *Request
- func (r *Request) TraceInfo() TraceInfo
- type RequestMiddleware
- type Response
- func (r *Response) Bytes() []byte
- func (r *Response) Dump() string
- func (r *Response) Error() interface{}deprecated
- func (r *Response) ErrorResult() interface{}
- func (r *Response) GetContentType() string
- func (r *Response) GetHeader(key string) string
- func (r *Response) GetHeaderValues(key string) []string
- func (r *Response) GetStatus() string
- func (r *Response) GetStatusCode() int
- func (r *Response) HeaderToString() string
- func (r *Response) Into(v interface{}) error
- func (r *Response) IsError() booldeprecated
- func (r *Response) IsErrorState() bool
- func (r *Response) IsSuccess() booldeprecated
- func (r *Response) IsSuccessState() bool
- func (r *Response) ReceivedAt() time.Time
- func (r *Response) Result() interface{}deprecated
- func (r *Response) ResultState() ResultState
- func (r *Response) SetBody(body []byte)
- func (r *Response) SetBodyString(body string)
- func (r *Response) String() string
- func (r *Response) SuccessResult() interface{}
- func (r *Response) ToBytes() (body []byte, err error)
- func (r *Response) ToString() (string, error)
- func (r *Response) TotalTime() time.Duration
- func (r *Response) TraceInfo() TraceInfo
- func (r *Response) Unmarshal(v interface{}) error
- func (r *Response) UnmarshalJson(v interface{}) error
- func (r *Response) UnmarshalXml(v interface{}) error
- type ResponseMiddleware
- type ResultState
- type RetryConditionFunc
- type RetryHookFunc
- type RoundTripFunc
- type RoundTripWrapper
- type RoundTripWrapperFunc
- type RoundTripper
- type TraceInfo
- type Transport
- func (t *Transport) CancelRequest(req *http.Request)deprecated
- func (t *Transport) Clone() *Transport
- func (t *Transport) CloseIdleConnections()
- func (t *Transport) DisableAutoDecode() *Transport
- func (t *Transport) DisableDump()
- func (t *Transport) DisableForceHttpVersion() *Transport
- func (t *Transport) DisableH2C() *Transport
- func (t *Transport) DisableHTTP3()
- func (t *Transport) EnableAutoDecode() *Transport
- func (t *Transport) EnableDump(opt *DumpOptions)
- func (t *Transport) EnableForceHTTP1() *Transport
- func (t *Transport) EnableForceHTTP2() *Transport
- func (t *Transport) EnableForceHTTP3() *Transport
- func (t *Transport) EnableH2C() *Transport
- func (t *Transport) EnableHTTP3()
- func (t *Transport) GetMaxIdleConns() int
- func (t *Transport) ImpersonateChrome() *Transport
- func (c *Transport) ImpersonateFirefox() *Transport
- func (c *Transport) ImpersonateSafari() *Transport
- func (t *Transport) RoundTrip(req *http.Request) (resp *http.Response, err error)
- func (t *Transport) SetAutoDecodeAllContentType() *Transport
- func (t *Transport) SetAutoDecodeContentType(contentTypes ...string)
- func (t *Transport) SetAutoDecodeContentTypeFunc(fn func(contentType string) bool) *Transport
- func (t *Transport) SetCommonHeaderOrder(keys ...string) *Transport
- func (t *Transport) SetCommonPseudoHeaderOder(keys ...string) *Transport
- func (t *Transport) SetDebug(debugf func(format string, v ...interface{})) *Transport
- func (t *Transport) SetDial(fn func(ctx context.Context, network, addr string) (net.Conn, error)) *Transport
- func (t *Transport) SetDialTLS(fn func(ctx context.Context, network, addr string) (net.Conn, error)) *Transport
- func (t *Transport) SetExpectContinueTimeout(timeout time.Duration) *Transport
- func (t *Transport) SetGetProxyConnectHeader(...) *Transport
- func (t *Transport) SetHTTP2ConnectionFlow(flow uint32) *Transport
- func (t *Transport) SetHTTP2HeaderPriority(priority http2.PriorityParam) *Transport
- func (t *Transport) SetHTTP2MaxHeaderListSize(max uint32) *Transport
- func (t *Transport) SetHTTP2PingTimeout(timeout time.Duration) *Transport
- func (t *Transport) SetHTTP2PriorityFrames(frames ...http2.PriorityFrame) *Transport
- func (t *Transport) SetHTTP2ReadIdleTimeout(timeout time.Duration) *Transport
- func (t *Transport) SetHTTP2SettingsFrame(settings ...http2.Setting) *Transport
- func (t *Transport) SetHTTP2StrictMaxConcurrentStreams(strict bool) *Transport
- func (t *Transport) SetHTTP2WriteByteTimeout(timeout time.Duration) *Transport
- func (t *Transport) SetIdleConnTimeout(timeout time.Duration) *Transport
- func (t *Transport) SetMaxConnsPerHost(max int) *Transport
- func (t *Transport) SetMaxIdleConns(max int) *Transport
- func (t *Transport) SetMaxResponseHeaderBytes(max int64) *Transport
- func (t *Transport) SetProxy(proxy func(*http.Request) (*url.URL, error)) *Transport
- func (t *Transport) SetProxyConnectHeader(header http.Header) *Transport
- func (t *Transport) SetReadBufferSize(size int) *Transport
- func (t *Transport) SetResponseHeaderTimeout(timeout time.Duration) *Transport
- func (t *Transport) SetTLSClientConfig(cfg *tls.Config) *Transport
- func (t *Transport) SetTLSFingerprint(clientHelloID utls.ClientHelloID) *Transport
- func (t *Transport) SetTLSHandshake(...) *Transport
- func (t *Transport) SetTLSHandshakeTimeout(timeout time.Duration) *Transport
- func (t *Transport) SetWriteBufferSize(size int) *Transport
- func (t *Transport) WrapRoundTrip(wrappers ...HttpRoundTripWrapper) *Transport
- func (t *Transport) WrapRoundTripFunc(funcs ...HttpRoundTripWrapperFunc) *Transport
- type UploadCallback
- type UploadInfo
Constants ¶
const ( // HeaderOderKey is the key of header order, which specifies the order // of the http header. HeaderOderKey = "__header_order__" // PseudoHeaderOderKey is the key of pseudo header order, which specifies // the order of the http2 and http3 pseudo header. PseudoHeaderOderKey = "__pseudo_header_order__" )
Variables ¶
var NoBody = noBody{}
NoBody is an io.ReadCloser with no bytes. Read always returns EOF and Close always returns nil. It can be used in an outgoing client request to explicitly signal that a request has zero bytes. An alternative, however, is to simply set Request.Body to nil.
Functions ¶
This section is empty.
Types ¶
type Client ¶
type Client struct {
BaseURL string
PathParams map[string]string
QueryParams urlpkg.Values
FormData urlpkg.Values
DebugLog bool
AllowGetMethodPayload bool
*Transport
// contains filtered or unexported fields
}
Client is the req's http client.
func NewClientWithTransport ¶
func (*Client) AddCommonQueryParam ¶
AddCommonQueryParam add a URL query parameter with a key-value pair for requests fired from the client.
func (*Client) AddCommonQueryParams ¶
AddCommonQueryParams add one or more values of specified URL query parameter for requests fired from the client.
func (*Client) AddCommonRetryCondition ¶
func (c *Client) AddCommonRetryCondition(condition RetryConditionFunc) *Client
AddCommonRetryCondition adds a retry condition, which determines whether the request should retry.
func (*Client) AddCommonRetryHook ¶
func (c *Client) AddCommonRetryHook(hook RetryHookFunc) *Client
AddCommonRetryHook adds a retry hook for requests fired from the client, which will be executed before a retry.
func (*Client) ClearCookies ¶
ClearCookies clears all cookies if cookie is enabled, including cookies from cookie jar and cookies set by SetCommonCookies. Note: The cookie jar will not be cleared if you called SetCookieJar instead of SetCookieJarFactory.
func (*Client) DevMode ¶
DevMode enables: 1. Dump content of all requests and responses to see details. 2. Output debug level log for deeper insights. 3. Trace all requests, so you can get trace info to analyze performance.
func (*Client) DisableAllowGetMethodPayload ¶
DisableAllowGetMethodPayload disable sending GET method requests with body.
func (*Client) DisableAutoDecode ¶
DisableAutoDecode disable auto-detect charset and decode to utf-8 (enabled by default).
func (*Client) DisableAutoDecompress ¶
DisableAutoDecompress disables the automatic decompression (disabled by default).
func (*Client) DisableAutoReadResponse ¶
DisableAutoReadResponse disable read response body automatically (enabled by default).
func (*Client) DisableCompression ¶
DisableCompression disables the compression (enabled by default), which prevents the Transport from requesting compression with an "Accept-Encoding: gzip" request header when the Request contains no existing Accept-Encoding value. If the Transport requests gzip on its own and gets a gzipped response, it's transparently decoded in the Response.Body. However, if the user explicitly requested gzip it is not automatically uncompressed.
func (*Client) DisableDebugLog ¶
DisableDebugLog disable debug level log (disabled by default).
func (*Client) DisableDumpAll ¶
DisableDumpAll disable dump for requests fired from the client.
func (*Client) DisableForceHttpVersion ¶
DisableForceHttpVersion disable force using specified http version (disabled by default).
func (*Client) DisableH2C ¶
DisableH2C disables HTTP/2 over TCP without TLS.
func (*Client) DisableHTTP3 ¶
DisableHTTP3 disables the http3 protocol.
func (*Client) DisableInsecureSkipVerify ¶
DisableInsecureSkipVerify disable send https without verifing the server's certificates (disabled by default).
func (*Client) DisableKeepAlives ¶
DisableKeepAlives disable the HTTP keep-alives (enabled by default) and will only use the connection to the server for a single HTTP request.
This is unrelated to the similarly named TCP keep-alives.
func (*Client) DisableTraceAll ¶
DisableTraceAll disable trace for requests fired from the client.
func (*Client) Do ¶
Do is compatible with http.Client.Do, which can make req integration easier in some scenarios. It should be noted that this will make some req features not work properly, such as automatic retry, client middleware, etc.
func (*Client) EnableAllowGetMethodPayload ¶
EnableAllowGetMethodPayload allows sending GET method requests with body.
func (*Client) EnableAutoDecode ¶
EnableAutoDecode enable auto-detect charset and decode to utf-8 (enabled by default).
func (*Client) EnableAutoDecompress ¶
EnableAutoDecompress enables the automatic decompression (disabled by default).
func (*Client) EnableAutoReadResponse ¶
EnableAutoReadResponse enable read response body automatically (enabled by default).
func (*Client) EnableCompression ¶
EnableCompression enables the compression (enabled by default).
func (*Client) EnableDebugLog ¶
EnableDebugLog enable debug level log (disabled by default).
func (*Client) EnableDumpAll ¶
EnableDumpAll enable dump for requests fired from the client, including all content for the request and response by default.
func (*Client) EnableDumpAllAsync ¶
EnableDumpAllAsync enable dump for requests fired from the client and output asynchronously, can be used for debugging in production environment without affecting performance.
func (*Client) EnableDumpAllTo ¶
EnableDumpAllTo enable dump for requests fired from the client and output to the specified io.Writer.
func (*Client) EnableDumpAllToFile ¶
EnableDumpAllToFile enable dump for requests fired from the client and output to the specified file.
func (*Client) EnableDumpAllWithoutBody ¶
EnableDumpAllWithoutBody enable dump for requests fired from the client without body, can be used if you only care about the header.
func (*Client) EnableDumpAllWithoutHeader ¶
EnableDumpAllWithoutHeader enable dump for requests fired from the client without header, can be used if you only care about the body.
func (*Client) EnableDumpAllWithoutRequest ¶
EnableDumpAllWithoutRequest enables dump for requests fired from the client without request, can be used if you only care about the response.
func (*Client) EnableDumpAllWithoutRequestBody ¶
EnableDumpAllWithoutRequestBody enable dump for requests fired from the client without request body, can be used in the upload request to avoid dumping the unreadable binary content.
func (*Client) EnableDumpAllWithoutResponse ¶
EnableDumpAllWithoutResponse enable dump for requests fired from the client without response, can be used if you only care about the request.
func (*Client) EnableDumpAllWithoutResponseBody ¶
EnableDumpAllWithoutResponseBody enable dump for requests fired from the client without response body, can be used in the download request to avoid dumping the unreadable binary content.
func (*Client) EnableDumpEachRequest ¶
EnableDumpEachRequest enable dump at the request-level for each request, and only temporarily stores the dump content in memory, call Response.Dump() to get the dump content when needed.
func (*Client) EnableDumpEachRequestWithoutBody ¶
EnableDumpEachRequestWithoutBody enable dump without body at the request-level for each request, and only temporarily stores the dump content in memory, call Response.Dump() to get the dump content when needed.
func (*Client) EnableDumpEachRequestWithoutHeader ¶
EnableDumpEachRequestWithoutHeader enable dump without header at the request-level for each request, and only temporarily stores the dump content in memory, call Response.Dump() to get the dump content when needed.
func (*Client) EnableDumpEachRequestWithoutRequest ¶
EnableDumpEachRequestWithoutRequest enable dump without request at the request-level for each request, and only temporarily stores the dump content in memory, call Response.Dump() to get the dump content when needed.
func (*Client) EnableDumpEachRequestWithoutRequestBody ¶
EnableDumpEachRequestWithoutRequestBody enable dump without request body at the request-level for each request, and only temporarily stores the dump content in memory, call Response.Dump() to get the dump content when needed.
func (*Client) EnableDumpEachRequestWithoutResponse ¶
EnableDumpEachRequestWithoutResponse enable dump without response at the request-level for each request, and only temporarily stores the dump content in memory, call Response.Dump() to get the dump content when needed.
func (*Client) EnableDumpEachRequestWithoutResponseBody ¶
EnableDumpEachRequestWithoutResponseBody enable dump without response body at the request-level for each request, and only temporarily stores the dump content in memory, call Response.Dump() to get the dump content when needed.
func (*Client) EnableForceHTTP1 ¶
EnableForceHTTP1 enable force using HTTP1 (disabled by default).
Attention: This method should not be called when ImpersonateXXX, SetTLSFingerPrint or SetTLSHandshake and other methods that will customize the tls handshake are called.
func (*Client) EnableForceHTTP2 ¶
EnableForceHTTP2 enable force using HTTP2 for https requests (disabled by default).
Attention: This method should not be called when ImpersonateXXX, SetTLSFingerPrint or SetTLSHandshake and other methods that will customize the tls handshake are called.
func (*Client) EnableForceHTTP3 ¶
EnableForceHTTP3 enable force using HTTP3 for https requests (disabled by default).
Attention: This method should not be called when ImpersonateXXX, SetTLSFingerPrint or SetTLSHandshake and other methods that will customize the tls handshake are called.
func (*Client) EnableHTTP3 ¶
EnableHTTP3 enables the http3 protocol.
func (*Client) EnableInsecureSkipVerify ¶
EnableInsecureSkipVerify enable send https without verifing the server's certificates (disabled by default).
func (*Client) EnableKeepAlives ¶
EnableKeepAlives enables HTTP keep-alives (enabled by default).
func (*Client) EnableTraceAll ¶
EnableTraceAll enable trace for requests fired from the client (http3 currently does not support trace).
func (*Client) GetCookies ¶
GetCookies get cookies from the underlying `http.Client`'s `CookieJar`.
func (*Client) GetTLSClientConfig ¶
GetTLSClientConfig return the underlying tls.Config.
func (*Client) GetTransport ¶
GetTransport return the underlying transport.
func (*Client) ImpersonateChrome ¶
ImpersonateChrome impersonates Chrome browser (version 120).
func (*Client) ImpersonateFirefox ¶
ImpersonateFirefox impersonates Firefox browser (version 120).
func (*Client) ImpersonateSafari ¶
ImpersonateSafari impersonates Safari browser (version 16.6).
func (*Client) NewParallelDownload ¶
func (c *Client) NewParallelDownload(url string) *ParallelDownload
func (*Client) OnAfterResponse ¶
func (c *Client) OnAfterResponse(m ResponseMiddleware) *Client
OnAfterResponse add a response middleware which hooks after response received.
func (*Client) OnBeforeRequest ¶
func (c *Client) OnBeforeRequest(m RequestMiddleware) *Client
OnBeforeRequest add a request middleware which hooks before request sent.
func (*Client) OnError ¶
OnError set the error hook which will be executed if any error returned, even if the occurs before request is sent (e.g. invalid URL).
func (*Client) SetAutoDecodeAllContentType ¶
SetAutoDecodeAllContentType enable try auto-detect charset and decode all content type to utf-8.
func (*Client) SetAutoDecodeContentType ¶
SetAutoDecodeContentType set the content types that will be auto-detected and decode to utf-8 (e.g. "json", "xml", "html", "text").
func (*Client) SetAutoDecodeContentTypeFunc ¶
SetAutoDecodeContentTypeFunc set the function that determines whether the specified `Content-Type` should be auto-detected and decode to utf-8.
func (*Client) SetBaseURL ¶
SetBaseURL set the default base URL, will be used if request URL is a relative URL.
func (*Client) SetCertFromFile ¶
SetCertFromFile helps to set client certificates from cert and key file.
func (*Client) SetCerts ¶
func (c *Client) SetCerts(certs ...tls.Certificate) *Client
SetCerts set client certificates.
func (*Client) SetCommonBasicAuth ¶
SetCommonBasicAuth set the basic auth for requests fired from the client.
func (*Client) SetCommonBearerAuthToken ¶
SetCommonBearerAuthToken set the bearer auth token for requests fired from the client.
func (*Client) SetCommonContentType ¶
SetCommonContentType set the `Content-Type` header for requests fired from the client.
func (*Client) SetCommonCookies ¶
SetCommonCookies set HTTP cookies for requests fired from the client.
func (*Client) SetCommonDigestAuth ¶
SetCommonDigestAuth sets the Digest Access auth scheme for requests fired from the client. If a server responds with 401 and sends a Digest challenge in the WWW-Authenticate Header, requests will be resent with the appropriate Authorization Header.
For Example: To set the Digest scheme with user "roc" and password "123456"
client.SetCommonDigestAuth("roc", "123456")
Information about Digest Access Authentication can be found in RFC7616:
https://datatracker.ietf.org/doc/html/rfc7616
func (*Client) SetCommonDumpOptions ¶
func (c *Client) SetCommonDumpOptions(opt *DumpOptions) *Client
SetCommonDumpOptions configures the underlying Transport's DumpOptions for requests fired from the client.
func (*Client) SetCommonError
deprecated
SetCommonError set the common result that response body will be unmarshalled to if no error occurs but Response.ResultState returns ErrorState, by default it is HTTP status `code >= 400`, you can also use SetCommonResultStateChecker to customize the result state check logic.
Deprecated: Use SetCommonErrorResult instead.
func (*Client) SetCommonErrorResult ¶
SetCommonErrorResult set the common result that response body will be unmarshalled to if no error occurs but Response.ResultState returns ErrorState, by default it is HTTP status `code >= 400`, you can also use SetCommonResultStateChecker to customize the result state check logic.
func (*Client) SetCommonFormData ¶
SetCommonFormData set the form data from map for requests fired from the client which request method allows payload.
func (*Client) SetCommonFormDataFromValues ¶
SetCommonFormDataFromValues set the form data from url.Values for requests fired from the client which request method allows payload.
func (*Client) SetCommonHeader ¶
SetCommonHeader set a header for requests fired from the client.
func (*Client) SetCommonHeaderNonCanonical ¶
SetCommonHeaderNonCanonical set a header for requests fired from the client which key is a non-canonical key (keep case unchanged), only valid for HTTP/1.1.
func (*Client) SetCommonHeaderOrder ¶
SetCommonHeaderOrder set the order of the http header requests fired from the client (case-insensitive). For example:
client.R().SetCommonHeaderOrder(
"custom-header",
"cookie",
"user-agent",
"accept-encoding",
).Get(url
func (*Client) SetCommonHeaders ¶
SetCommonHeaders set headers for requests fired from the client.
func (*Client) SetCommonHeadersNonCanonical ¶
SetCommonHeadersNonCanonical set headers for requests fired from the client which key is a non-canonical key (keep case unchanged), only valid for HTTP/1.1.
func (*Client) SetCommonPathParam ¶
SetCommonPathParam set a path parameter for requests fired from the client.
func (*Client) SetCommonPathParams ¶
SetCommonPathParams set path parameters for requests fired from the client.
func (*Client) SetCommonPseudoHeaderOder ¶
SetCommonPseudoHeaderOder set the order of the pseudo http header requests fired from the client (case-insensitive). Note this is only valid for http2 and http3. For example:
client.SetCommonPseudoHeaderOder(
":scheme",
":authority",
":path",
":method",
)
func (*Client) SetCommonQueryParam ¶
SetCommonQueryParam set a URL query parameter with a key-value pair for requests fired from the client.
func (*Client) SetCommonQueryParams ¶
SetCommonQueryParams set URL query parameters with a map for requests fired from the client.
func (*Client) SetCommonQueryString ¶
SetCommonQueryString set URL query parameters with a raw query string for requests fired from the client.
func (*Client) SetCommonRetryBackoffInterval ¶
SetCommonRetryBackoffInterval set retry to use a capped exponential backoff with jitter for requests fired from the client. https://aws.amazon.com/blogs/architecture/exponential-backoff-and-jitter/
func (*Client) SetCommonRetryCondition ¶
func (c *Client) SetCommonRetryCondition(condition RetryConditionFunc) *Client
SetCommonRetryCondition sets the retry condition, which determines whether the request should retry. It will override other retry conditions if any been added before.
func (*Client) SetCommonRetryCount ¶
SetCommonRetryCount enables retry and set the maximum retry count for requests fired from the client. It will retry infinitely if count is negative.
func (*Client) SetCommonRetryFixedInterval ¶
SetCommonRetryFixedInterval set retry to use a fixed interval for requests fired from the client.
func (*Client) SetCommonRetryHook ¶
func (c *Client) SetCommonRetryHook(hook RetryHookFunc) *Client
SetCommonRetryHook set the retry hook which will be executed before a retry. It will override other retry hooks if any been added before.
func (*Client) SetCommonRetryInterval ¶
func (c *Client) SetCommonRetryInterval(getRetryIntervalFunc GetRetryIntervalFunc) *Client
SetCommonRetryInterval sets the custom GetRetryIntervalFunc for requests fired from the client, you can use this to implement your own backoff retry algorithm. For example:
req.SetCommonRetryInterval(func(resp *req.Response, attempt int) time.Duration {
sleep := 0.01 * math.Exp2(float64(attempt))
return time.Duration(math.Min(2, sleep)) * time.Second
})
func (*Client) SetCookieJar ¶
SetCookieJar set the cookie jar to the underlying `http.Client`, set to nil if you want to disable cookies. Note: If you use Client.Clone to clone a new Client, the new client will share the same cookie jar as the old Client after cloning. Use SetCookieJarFactory instead if you want to create a new CookieJar automatically when cloning a client.
func (*Client) SetCookieJarFactory ¶
SetCookieJarFactory set the functional factory of cookie jar, which creates cookie jar that store cookies for underlying `http.Client`. After client clone, the cookie jar of the new client will also be regenerated using this factory function.
func (*Client) SetDial ¶
func (c *Client) SetDial(fn func(ctx context.Context, network, addr string) (net.Conn, error)) *Client
SetDial set the customized `DialContext` function to Transport.
func (*Client) SetDialTLS ¶
func (c *Client) SetDialTLS(fn func(ctx context.Context, network, addr string) (net.Conn, error)) *Client
SetDialTLS set the customized `DialTLSContext` function to Transport. Make sure the returned `conn` implements pkg/tls.Conn if you want your customized `conn` supports HTTP2.
func (*Client) SetHTTP2ConnectionFlow ¶
SetHTTP2ConnectionFlow set the default http2 connection flow, which is the increment value of initial WINDOW_UPDATE frame.
func (*Client) SetHTTP2HeaderPriority ¶
func (c *Client) SetHTTP2HeaderPriority(priority http2.PriorityParam) *Client
SetHTTP2HeaderPriority set the header priority param.
func (*Client) SetHTTP2MaxHeaderListSize ¶
SetHTTP2MaxHeaderListSize set the http2 MaxHeaderListSize, which is the http2 SETTINGS_MAX_HEADER_LIST_SIZE to send in the initial settings frame. It is how many bytes of response headers are allowed. Unlike the http2 spec, zero here means to use a default limit (currently 10MB). If you actually want to advertise an unlimited value to the peer, Transport interprets the highest possible value here (0xffffffff or 1<<32-1) to mean no limit.
func (*Client) SetHTTP2PingTimeout ¶
SetHTTP2PingTimeout set the http2 PingTimeout, which is the timeout after which the connection will be closed if a response to Ping is not received. Defaults to 15s
func (*Client) SetHTTP2PriorityFrames ¶
func (c *Client) SetHTTP2PriorityFrames(frames ...http2.PriorityFrame) *Client
SetHTTP2PriorityFrames set the ordered http2 priority frames.
func (*Client) SetHTTP2ReadIdleTimeout ¶
SetHTTP2ReadIdleTimeout set the http2 ReadIdleTimeout, which is the timeout after which a health check using ping frame will be carried out if no frame is received on the connection. Note that a ping response will is considered a received frame, so if there is no other traffic on the connection, the health check will be performed every ReadIdleTimeout interval. If zero, no health check is performed.
func (*Client) SetHTTP2SettingsFrame ¶
SetHTTP2SettingsFrame set the ordered http2 settings frame.
func (*Client) SetHTTP2StrictMaxConcurrentStreams ¶
SetHTTP2StrictMaxConcurrentStreams set the http2 StrictMaxConcurrentStreams, which controls whether the server's SETTINGS_MAX_CONCURRENT_STREAMS should be respected globally. If false, new TCP connections are created to the server as needed to keep each under the per-connection SETTINGS_MAX_CONCURRENT_STREAMS limit. If true, the server's SETTINGS_MAX_CONCURRENT_STREAMS is interpreted as a global limit and callers of RoundTrip block when needed, waiting for their turn.
func (*Client) SetHTTP2WriteByteTimeout ¶
SetHTTP2WriteByteTimeout set the http2 WriteByteTimeout, which is the timeout after which the connection will be closed no data can be written to it. The timeout begins when data is available to write, and is extended whenever any bytes are written.
func (*Client) SetJsonMarshal ¶
SetJsonMarshal set the JSON marshal function which will be used to marshal request body.
func (*Client) SetJsonUnmarshal ¶
SetJsonUnmarshal set the JSON unmarshal function which will be used to unmarshal response body.
func (*Client) SetLogger ¶
SetLogger set the customized logger for client, will disable log if set to nil.
func (*Client) SetMultipartBoundaryFunc ¶
SetMultipartBoundaryFunc overrides the default function used to generate boundary delimiters for "multipart/form-data" requests with a customized one, which returns a boundary delimiter (without the two leading hyphens).
Boundary delimiter may only contain certain ASCII characters, and must be non-empty and at most 70 bytes long (see RFC 2046, Section 5.1.1).
func (*Client) SetOutputDirectory ¶
SetOutputDirectory set output directory that response will be downloaded to.
func (*Client) SetProxyURL ¶
SetProxyURL set proxy from the proxy URL.
func (*Client) SetRedirectPolicy ¶
func (c *Client) SetRedirectPolicy(policies ...RedirectPolicy) *Client
SetRedirectPolicy set the RedirectPolicy which controls the behavior of receiving redirect responses (usually responses with 301 and 302 status code), see the predefined AllowedDomainRedirectPolicy, AllowedHostRedirectPolicy, DefaultRedirectPolicy, MaxRedirectPolicy, NoRedirectPolicy, SameDomainRedirectPolicy and SameHostRedirectPolicy.
func (*Client) SetResponseBodyTransformer ¶
func (c *Client) SetResponseBodyTransformer(fn func(rawBody []byte, req *Request, resp *Response) (transformedBody []byte, err error)) *Client
SetResponseBodyTransformer set the response body transformer, which can modify the response body before unmarshalled if auto-read response body is not disabled.
func (*Client) SetResultStateCheckFunc ¶
func (c *Client) SetResultStateCheckFunc(fn func(resp *Response) ResultState) *Client
SetResultStateCheckFunc overrides the default result state checker with customized one, which returns SuccessState when HTTP status `code >= 200 and <= 299`, and returns ErrorState when HTTP status `code >= 400`, otherwise returns UnknownState.
func (*Client) SetRootCertFromString ¶
SetRootCertFromString set root certificates from string.
func (*Client) SetRootCertsFromFile ¶
SetRootCertsFromFile set root certificates from files.
func (*Client) SetScheme ¶
SetScheme set the default scheme for client, will be used when there is no scheme in the request URL (e.g. "github.com/imroc/req").
func (*Client) SetTLSClientConfig ¶
SetTLSClientConfig set the TLS client config. Be careful! Usually you don't need this, you can directly set the tls configuration with methods like EnableInsecureSkipVerify, SetCerts etc. Or you can call GetTLSClientConfig to get the current tls configuration to avoid overwriting some important configurations, such as not setting NextProtos will not use http2 by default.
func (*Client) SetTLSFingerprint ¶
func (c *Client) SetTLSFingerprint(clientHelloID utls.ClientHelloID) *Client
SetTLSFingerprint set the tls fingerprint for tls handshake, will use utls (https://github.com/refraction-networking/utls) to perform the tls handshake, which uses the specified clientHelloID to simulate the tls fingerprint. Note this is valid for HTTP1 and HTTP2, not HTTP3.
func (*Client) SetTLSFingerprint360 ¶
SetTLSFingerprint360 uses tls fingerprint of 360 browser.
func (*Client) SetTLSFingerprintAndroid ¶
SetTLSFingerprintAndroid uses tls fingerprint of Android.
func (*Client) SetTLSFingerprintChrome ¶
SetTLSFingerprintChrome uses tls fingerprint of Chrome browser.
func (*Client) SetTLSFingerprintEdge ¶
SetTLSFingerprintEdge uses tls fingerprint of Edge browser.
func (*Client) SetTLSFingerprintFirefox ¶
SetTLSFingerprintFirefox uses tls fingerprint of Firefox browser.
func (*Client) SetTLSFingerprintIOS ¶
SetTLSFingerprintIOS uses tls fingerprint of IOS.
func (*Client) SetTLSFingerprintQQ ¶
SetTLSFingerprintQQ uses tls fingerprint of QQ browser.
func (*Client) SetTLSFingerprintRandomized ¶
SetTLSFingerprintRandomized uses randomized tls fingerprint.
func (*Client) SetTLSFingerprintSafari ¶
SetTLSFingerprintSafari uses tls fingerprint of Safari browser.
func (*Client) SetTLSHandshake ¶
func (c *Client) SetTLSHandshake(fn func(ctx context.Context, addr string, plainConn net.Conn) (conn net.Conn, tlsState *tls.ConnectionState, err error)) *Client
SetTLSHandshake set the custom tls handshake function, only valid for HTTP1 and HTTP2, not HTTP3, it specifies an optional dial function for tls handshake, it works even if a proxy is set, can be used to customize the tls fingerprint.
func (*Client) SetTLSHandshakeTimeout ¶
SetTLSHandshakeTimeout set the TLS handshake timeout.
func (*Client) SetTimeout ¶
SetTimeout set timeout for requests fired from the client.
func (*Client) SetUnixSocket ¶
SetUnixSocket set client to dial connection use unix socket. For example:
client.SetUnixSocket("/var/run/custom.sock")
func (*Client) SetUserAgent ¶
SetUserAgent set the "User-Agent" header for requests fired from the client.
func (*Client) SetXmlMarshal ¶
SetXmlMarshal set the XML marshal function which will be used to marshal request body.
func (*Client) SetXmlUnmarshal ¶
SetXmlUnmarshal set the XML unmarshal function which will be used to unmarshal response body.
func (*Client) WrapRoundTrip ¶
func (c *Client) WrapRoundTrip(wrappers ...RoundTripWrapper) *Client
WrapRoundTrip adds a client middleware function that will give the caller an opportunity to wrap the underlying http.RoundTripper.
func (*Client) WrapRoundTripFunc ¶
func (c *Client) WrapRoundTripFunc(funcs ...RoundTripWrapperFunc) *Client
WrapRoundTripFunc adds a client middleware function that will give the caller an opportunity to wrap the underlying http.RoundTripper.
type ContentDisposition ¶
type ContentDisposition struct {
// contains filtered or unexported fields
}
ContentDisposition represents parameters in `Content-Disposition` MIME header of multipart request.
func (*ContentDisposition) Add ¶
func (c *ContentDisposition) Add(key, value string) *ContentDisposition
Add adds a new key-value pair of Content-Disposition
type DownloadCallback ¶
type DownloadCallback func(info DownloadInfo)
DownloadCallback is the callback which will be invoked during response body download.
type DownloadInfo ¶
type DownloadInfo struct {
// Response is the corresponding Response during download.
Response *Response
// downloaded body length in bytes.
DownloadedSize int64
}
DownloadInfo is the information for each DownloadCallback call.
type DumpOptions ¶
type DumpOptions struct {
Output io.Writer
RequestOutput io.Writer
ResponseOutput io.Writer
RequestHeaderOutput io.Writer
RequestBodyOutput io.Writer
ResponseHeaderOutput io.Writer
ResponseBodyOutput io.Writer
RequestHeader bool
RequestBody bool
ResponseHeader bool
ResponseBody bool
Async bool
}
DumpOptions controls the dump behavior.
func (*DumpOptions) Clone ¶
func (do *DumpOptions) Clone() *DumpOptions
Clone return a copy of DumpOptions
type FileUpload ¶
type FileUpload struct {
// "name" parameter in `Content-Disposition`
ParamName string
// "filename" parameter in `Content-Disposition`
FileName string
// The file to be uploaded.
GetFileContent GetContentFunc
// Optional file length in bytes.
FileSize int64
// Optional Content-Type
ContentType string
// Optional extra ContentDisposition parameters.
// According to the HTTP specification, this should be nil,
// but some servers may not follow the specification and
// requires `Content-Disposition` parameters more than just
// "name" and "filename".
ExtraContentDisposition *ContentDisposition
}
FileUpload represents a "form-data" multipart
type GetContentFunc ¶
type GetContentFunc func() (io.ReadCloser, error)
type GetRetryIntervalFunc ¶
GetRetryIntervalFunc is a function that determines how long should sleep between retry attempts.
type HttpRoundTripFunc ¶
HttpRoundTripFunc is a http.RoundTripper implementation, which is a simple function.
type HttpRoundTripWrapper ¶
type HttpRoundTripWrapper func(rt http.RoundTripper) http.RoundTripper
HttpRoundTripWrapper is transport middleware function.
type HttpRoundTripWrapperFunc ¶
type HttpRoundTripWrapperFunc func(rt http.RoundTripper) HttpRoundTripFunc
HttpRoundTripWrapperFunc is transport middleware function, more convenient than HttpRoundTripWrapper.
type Logger ¶
type Logger interface {
Errorf(format string, v ...interface{})
Warnf(format string, v ...interface{})
Debugf(format string, v ...interface{})
}
Logger is the abstract logging interface, gives control to the Req users, choice of the logger.
type ParallelDownload ¶
type ParallelDownload struct {
// contains filtered or unexported fields
}
func (*ParallelDownload) SetConcurrency ¶
func (pd *ParallelDownload) SetConcurrency(concurrency int) *ParallelDownload
func (*ParallelDownload) SetFileMode ¶
func (pd *ParallelDownload) SetFileMode(perm os.FileMode) *ParallelDownload
func (*ParallelDownload) SetOutput ¶
func (pd *ParallelDownload) SetOutput(output io.Writer) *ParallelDownload
func (*ParallelDownload) SetOutputFile ¶
func (pd *ParallelDownload) SetOutputFile(filename string) *ParallelDownload
func (*ParallelDownload) SetSegmentSize ¶
func (pd *ParallelDownload) SetSegmentSize(segmentSize int64) *ParallelDownload
func (*ParallelDownload) SetTempRootDir ¶
func (pd *ParallelDownload) SetTempRootDir(tempRootDir string) *ParallelDownload
type RedirectPolicy ¶
RedirectPolicy represents the redirect policy for Client.
func AllowedDomainRedirectPolicy ¶
func AllowedDomainRedirectPolicy(hosts ...string) RedirectPolicy
AllowedDomainRedirectPolicy allows redirect only if the redirected domain match one of the domain that specified.
func AllowedHostRedirectPolicy ¶
func AllowedHostRedirectPolicy(hosts ...string) RedirectPolicy
AllowedHostRedirectPolicy allows redirect only if the redirected host match one of the host that specified.
func AlwaysCopyHeaderRedirectPolicy ¶
func AlwaysCopyHeaderRedirectPolicy(headers ...string) RedirectPolicy
AlwaysCopyHeaderRedirectPolicy ensures that the given sensitive headers will always be copied on redirect. By default, golang will copy all of the original request's headers on redirect, unless they're sensitive, like "Authorization" or "Www-Authenticate". Only send sensitive ones to the same origin, or subdomains thereof (https://go-review.googlesource.com/c/go/+/28930/) Check discussion: https://github.com/golang/go/issues/4800 For example:
client.SetRedirectPolicy(req.AlwaysCopyHeaderRedirectPolicy("Authorization"))
func DefaultRedirectPolicy ¶
func DefaultRedirectPolicy() RedirectPolicy
DefaultRedirectPolicy allows up to 10 redirects
func MaxRedirectPolicy ¶
func MaxRedirectPolicy(noOfRedirect int) RedirectPolicy
MaxRedirectPolicy specifies the max number of redirect
func NoRedirectPolicy ¶
func NoRedirectPolicy() RedirectPolicy
NoRedirectPolicy disable redirect behaviour
func SameDomainRedirectPolicy ¶
func SameDomainRedirectPolicy() RedirectPolicy
SameDomainRedirectPolicy allows redirect only if the redirected domain is the same as original domain, e.g. redirect to "www.imroc.cc" from "imroc.cc" is allowed, but redirect to "google.com" is not allowed.
func SameHostRedirectPolicy ¶
func SameHostRedirectPolicy() RedirectPolicy
SameHostRedirectPolicy allows redirect only if the redirected host is the same as original host, e.g. redirect to "www.imroc.cc" from "imroc.cc" is not the allowed.
type Request ¶
type Request struct {
PathParams map[string]string
QueryParams urlpkg.Values
FormData urlpkg.Values
OrderedFormData []string
Headers http.Header
Cookies []*http.Cookie
Result interface{}
Error interface{}
RawRequest *http.Request
StartTime time.Time
RetryAttempt int
RawURL string // read only
Method string
Body []byte
GetBody GetContentFunc
// URL is an auto-generated field, and is nil in request middleware (OnBeforeRequest),
// consider using RawURL if you want, it's not nil in client middleware (WrapRoundTripFunc)
URL *urlpkg.URL
// contains filtered or unexported fields
}
Request struct is used to compose and fire individual request from req client. Request provides lots of chainable settings which can override client level settings.
func (*Request) AddQueryParam ¶
AddQueryParam add a URL query parameter for the request.
func (*Request) AddQueryParams ¶
AddQueryParams add one or more values of specified URL query parameter for the request.
func (*Request) AddRetryCondition ¶
func (r *Request) AddRetryCondition(condition RetryConditionFunc) *Request
AddRetryCondition adds a retry condition, which determines whether the request should retry.
func (*Request) AddRetryHook ¶
func (r *Request) AddRetryHook(hook RetryHookFunc) *Request
AddRetryHook adds a retry hook which will be executed before a retry.
func (*Request) Context ¶
Context method returns the Context if its already set in request otherwise it creates new one using `context.Background()`.
func (*Request) DisableAutoReadResponse ¶
DisableAutoReadResponse disable read response body automatically (enabled by default).
func (*Request) DisableForceChunkedEncoding ¶
DisableForceChunkedEncoding disables force using chunked encoding when uploading.
func (*Request) DisableForceMultipart ¶
DisableForceMultipart disables force using multipart to upload form data.
func (*Request) DisableTrace ¶
DisableTrace disables trace.
func (*Request) Do ¶
Do fires http request, 0 or 1 context is allowed, and returns the *Response which is always not nil, and Response.Err is not nil if error occurs.
func (*Request) EnableAutoReadResponse ¶
EnableAutoReadResponse enable read response body automatically (enabled by default).
func (*Request) EnableCloseConnection ¶
EnableCloseConnection closes the connection after sending this request and reading its response if set to true in HTTP/1.1 and HTTP/2.
Setting this field prevents re-use of TCP connections between requests to the same hosts event if EnableKeepAlives() were called.
func (*Request) EnableDump ¶
EnableDump enables dump, including all content for the request and response by default.
func (*Request) EnableDumpTo ¶
EnableDumpTo enables dump and save to the specified io.Writer.
func (*Request) EnableDumpToFile ¶
EnableDumpToFile enables dump and save to the specified filename.
func (*Request) EnableDumpWithoutBody ¶
EnableDumpWithoutBody enables dump only header for the request and response.
func (*Request) EnableDumpWithoutHeader ¶
EnableDumpWithoutHeader enables dump only Body for the request and response.
func (*Request) EnableDumpWithoutRequest ¶
EnableDumpWithoutRequest enables dump only response.
func (*Request) EnableDumpWithoutRequestBody ¶
EnableDumpWithoutRequestBody enables dump with request Body excluded, can be used in upload request to avoid dump the unreadable binary content.
func (*Request) EnableDumpWithoutResponse ¶
EnableDumpWithoutResponse enables dump only request.
func (*Request) EnableDumpWithoutResponseBody ¶
EnableDumpWithoutResponseBody enables dump with response Body excluded, can be used in download request to avoid dump the unreadable binary content.
func (*Request) EnableForceChunkedEncoding ¶
EnableForceChunkedEncoding enables force using chunked encoding when uploading.
func (*Request) EnableForceMultipart ¶
EnableForceMultipart enables force using multipart to upload form data.
func (*Request) EnableTrace ¶
EnableTrace enables trace (http3 currently does not support trace).
func (*Request) GetContextData ¶
GetContextData returns the context data of specified key, which set by SetContextData.
func (*Request) HeaderToString ¶
HeaderToString get all header as string.
func (*Request) MustDelete ¶
MustDelete like Delete, panic if error happens, should only be used to test without error handling.
func (*Request) MustGet ¶
MustGet like Get, panic if error happens, should only be used to test without error handling.
func (*Request) MustHead ¶
MustHead like Head, panic if error happens, should only be used to test without error handling.
func (*Request) MustOptions ¶
MustOptions like Options, panic if error happens, should only be used to test without error handling.
func (*Request) MustPatch ¶
MustPatch like Patch, panic if error happens, should only be used to test without error handling.
func (*Request) MustPost ¶
MustPost like Post, panic if error happens. should only be used to test without error handling.
func (*Request) MustPut ¶
MustPut like Put, panic if error happens, should only be used to test without error handling.
func (*Request) OnAfterResponse ¶
func (r *Request) OnAfterResponse(m ResponseMiddleware) *Request
OnAfterResponse add a response middleware which hooks after response received.
func (*Request) Send ¶
Send fires http request with specified method and url, returns the *Response which is always not nil, and the error is not nil if error occurs.
func (*Request) SetBasicAuth ¶
SetBasicAuth set basic auth for the request.
func (*Request) SetBearerAuthToken ¶
SetBearerAuthToken set bearer auth token for the request.
func (*Request) SetBody ¶
SetBody set the request Body, accepts string, []byte, io.Reader, map and struct.
func (*Request) SetBodyBytes ¶
SetBodyBytes set the request Body as []byte.
func (*Request) SetBodyJsonBytes ¶
SetBodyJsonBytes set the request Body as []byte and set Content-Type header as "application/json; charset=utf-8"
func (*Request) SetBodyJsonMarshal ¶
SetBodyJsonMarshal set the request Body that marshaled from object, and set Content-Type header as "application/json; charset=utf-8"
func (*Request) SetBodyJsonString ¶
SetBodyJsonString set the request Body as string and set Content-Type header as "application/json; charset=utf-8"
func (*Request) SetBodyString ¶
SetBodyString set the request Body as string.
func (*Request) SetBodyXmlBytes ¶
SetBodyXmlBytes set the request Body as []byte and set Content-Type header as "text/xml; charset=utf-8"
func (*Request) SetBodyXmlMarshal ¶
SetBodyXmlMarshal set the request Body that marshaled from object, and set Content-Type header as "text/xml; charset=utf-8"
func (*Request) SetBodyXmlString ¶
SetBodyXmlString set the request Body as string and set Content-Type header as "text/xml; charset=utf-8"
func (*Request) SetContentType ¶
SetContentType set the `Content-Type` for the request.
func (*Request) SetContext ¶
SetContext method sets the context.Context for current Request. It allows to interrupt the request execution if ctx.Done() channel is closed. See https://blog.golang.org/context article and the "context" package documentation.
Attention: make sure call SetContext before EnableDumpXXX if you want to dump at the request level.
func (*Request) SetContextData ¶
SetContextData sets the key-value pair data for current Request, so you can access some extra context info for current Request in hook or middleware.
func (*Request) SetCookies ¶
SetCookies set http cookies for the request.
func (*Request) SetDigestAuth
deprecated
SetDigestAuth sets the Digest Access auth scheme for the HTTP request. If a server responds with 401 and sends a Digest challenge in the WWW-Authenticate Header, the request will be resent with the appropriate Authorization Header.
For Example: To set the Digest scheme with username "roc" and password "123456"
client.R().SetDigestAuth("roc", "123456")
Information about Digest Access Authentication can be found in RFC7616:
https://datatracker.ietf.org/doc/html/rfc7616
Deprecated: Use Client.SetCommonDigestAuth instead. Request level digest auth is not recommended,
func (*Request) SetDownloadCallback ¶
func (r *Request) SetDownloadCallback(callback DownloadCallback) *Request
SetDownloadCallback set the DownloadCallback which will be invoked at least every 200ms during file upload, usually used to show download progress.
func (*Request) SetDownloadCallbackWithInterval ¶
func (r *Request) SetDownloadCallbackWithInterval(callback DownloadCallback, minInterval time.Duration) *Request
SetDownloadCallbackWithInterval set the DownloadCallback which will be invoked at least every `minInterval` during file upload, usually used to show download progress.
func (*Request) SetDumpOptions ¶
func (r *Request) SetDumpOptions(opt *DumpOptions) *Request
SetDumpOptions sets DumpOptions at request level.
func (*Request) SetError
deprecated
SetError set the result that response body will be unmarshalled to if no error occurs and Response.ResultState() returns ErrorState, by default it requires HTTP status `code >= 400`, you can also use Client.SetResultStateCheckFunc to customize the result state check logic.
Deprecated: Use SetErrorResult result.
func (*Request) SetErrorResult ¶
SetErrorResult set the result that response body will be unmarshalled to if no error occurs and Response.ResultState() returns ErrorState, by default it requires HTTP status `code >= 400`, you can also use Client.SetResultStateCheckFunc to customize the result state check logic.
func (*Request) SetFile ¶
SetFile set up a multipart form from file path to upload, which read file from filePath automatically to upload.
func (*Request) SetFileBytes ¶
SetFileBytes set up a multipart form with given []byte to upload.
func (*Request) SetFileReader ¶
SetFileReader set up a multipart form with a reader to upload file.
func (*Request) SetFileUpload ¶
func (r *Request) SetFileUpload(uploads ...FileUpload) *Request
SetFileUpload set the fully custimized multipart file upload options.
func (*Request) SetFiles ¶
SetFiles set up a multipart form from a map to upload, which key is the parameter name, and value is the file path.
func (*Request) SetFormData ¶
SetFormData set the form data from a map, will not been used if request method does not allow payload.
func (*Request) SetFormDataAnyType ¶
SetFormDataAnyType set the form data from a map, which value could be any type, will convert to string automatically. It will not been used if request method does not allow payload.
func (*Request) SetFormDataFromValues ¶
SetFormDataFromValues set the form data from url.Values, will not been used if request method does not allow payload.
func (*Request) SetHeaderNonCanonical ¶
SetHeaderNonCanonical set a header for the request which key is a non-canonical key (keep case unchanged), only valid for HTTP/1.1.
func (*Request) SetHeaderOrder ¶
SetHeaderOrder set the order of the http header (case-insensitive). For example:
client.R().SetHeaderOrder(
"custom-header",
"cookie",
"user-agent",
"accept-encoding",
)
func (*Request) SetHeaders ¶
SetHeaders set headers from a map for the request.
func (*Request) SetHeadersNonCanonical ¶
SetHeadersNonCanonical set headers from a map for the request which key is a non-canonical key (keep case unchanged), only valid for HTTP/1.1.
func (*Request) SetOrderedFormData ¶
SetOrderedFormData set the ordered form data from key-values pairs.
func (*Request) SetOutputFile ¶
SetOutputFile set the file that response Body will be downloaded to.
func (*Request) SetPathParam ¶
SetPathParam set a URL path parameter for the request.
func (*Request) SetPathParams ¶
SetPathParams set URL path parameters from a map for the request.
func (*Request) SetPseudoHeaderOrder ¶
SetPseudoHeaderOrder set the order of the pseudo http header (case-insensitive). Note this is only valid for http2 and http3. For example:
client.R().SetPseudoHeaderOrder(
":scheme",
":authority",
":path",
":method",
)
func (*Request) SetQueryParam ¶
SetQueryParam set an URL query parameter for the request.
func (*Request) SetQueryParams ¶
SetQueryParams set URL query parameters from a map for the request.
func (*Request) SetQueryParamsAnyType ¶
SetQueryParamsAnyType set URL query parameters from a map for the request. The value of map is any type, will be convert to string automatically.
func (*Request) SetQueryString ¶
SetQueryString set URL query parameters for the request using raw query string.
func (*Request) SetResult
deprecated
SetResult set the result that response Body will be unmarshalled to if no error occurs and Response.ResultState() returns SuccessState, by default it requires HTTP status `code >= 200 && code <= 299`, you can also use Client.SetResultStateCheckFunc to customize the result state check logic.
Deprecated: Use SetSuccessResult instead.
func (*Request) SetRetryBackoffInterval ¶
SetRetryBackoffInterval set retry to use a capped exponential backoff with jitter. https://aws.amazon.com/blogs/architecture/exponential-backoff-and-jitter/
func (*Request) SetRetryCondition ¶
func (r *Request) SetRetryCondition(condition RetryConditionFunc) *Request
SetRetryCondition sets the retry condition, which determines whether the request should retry. It will override other retry conditions if any been added before (including client-level retry conditions).
func (*Request) SetRetryCount ¶
SetRetryCount enables retry and set the maximum retry count. It will retry infinitely if count is negative.
func (*Request) SetRetryFixedInterval ¶
SetRetryFixedInterval set retry to use a fixed interval.
func (*Request) SetRetryHook ¶
func (r *Request) SetRetryHook(hook RetryHookFunc) *Request
SetRetryHook set the retry hook which will be executed before a retry. It will override other retry hooks if any been added before (including client-level retry hooks).
func (*Request) SetRetryInterval ¶
func (r *Request) SetRetryInterval(getRetryIntervalFunc GetRetryIntervalFunc) *Request
SetRetryInterval sets the custom GetRetryIntervalFunc, you can use this to implement your own backoff retry algorithm. For example:
req.SetRetryInterval(func(resp *req.Response, attempt int) time.Duration {
sleep := 0.01 * math.Exp2(float64(attempt))
return time.Duration(math.Min(2, sleep)) * time.Second
})
func (*Request) SetSuccessResult ¶
SetSuccessResult set the result that response Body will be unmarshalled to if no error occurs and Response.ResultState() returns SuccessState, by default it requires HTTP status `code >= 200 && code <= 299`, you can also use Client.SetResultStateCheckFunc to customize the result state check logic.
func (*Request) SetUploadCallback ¶
func (r *Request) SetUploadCallback(callback UploadCallback) *Request
SetUploadCallback set the UploadCallback which will be invoked at least every 200ms during file upload, usually used to show upload progress.
func (*Request) SetUploadCallbackWithInterval ¶
func (r *Request) SetUploadCallbackWithInterval(callback UploadCallback, minInterval time.Duration) *Request
SetUploadCallbackWithInterval set the UploadCallback which will be invoked at least every `minInterval` during file upload, usually used to show upload progress.
type RequestMiddleware ¶
RequestMiddleware type is for request middleware, called before a request is sent
type Response ¶
type Response struct {
// The underlying http.Response is embed into Response.
*http.Response
// Err is the underlying error, not nil if some error occurs.
// Usually used in the ResponseMiddleware, you can skip logic in
// ResponseMiddleware that doesn't need to be executed when err occurs.
Err error
// Request is the Response's related Request.
Request *Request
// contains filtered or unexported fields
}
Response is the http response.
func (*Response) Bytes ¶
Bytes return the response body as []bytes that have already been read, could be nil if not read, the following cases are already read:
- `Request.SetResult` or `Request.SetError` is called.
- `Client.DisableAutoReadResponse` and `Request.DisableAutoReadResponse` is not called, and also `Request.SetOutput` and `Request.SetOutputFile` is not called.
func (*Response) Dump ¶
Dump return the string content that have been dumped for the request. `Request.Dump` or `Request.DumpXXX` MUST have been called.
func (*Response) ErrorResult ¶
func (r *Response) ErrorResult() interface{}
ErrorResult returns the automatically unmarshalled object when Request.SetErrorResult or Client.SetCommonErrorResult is called, and ResultState returns ErrorState. Otherwise, return nil.
func (*Response) GetContentType ¶
GetContentType return the `Content-Type` header value.
func (*Response) GetHeaderValues ¶
GetHeaderValues returns the response header values by key.
func (*Response) GetStatusCode ¶
GetStatusCode returns the response status code.
func (*Response) HeaderToString ¶
HeaderToString get all header as string.
func (*Response) Into ¶
Into unmarshalls response body into the specified object according to response `Content-Type`.
func (*Response) IsErrorState ¶
IsErrorState method returns true if no error occurs and HTTP status `code >= 400` by default, you can also use Client.SetResultStateCheckFunc to customize the result state check logic.
func (*Response) IsSuccess
deprecated
func (*Response) IsSuccessState ¶
IsSuccessState method returns true if no error occurs and HTTP status `code >= 200 and <= 299` by default, you can also use Client.SetResultStateCheckFunc to customize the result state check logic.
func (*Response) ReceivedAt ¶
ReceivedAt returns the timestamp that response we received.
func (*Response) ResultState ¶
func (r *Response) ResultState() ResultState
ResultState returns the result state. By default, it returns SuccessState if HTTP status `code >= 400`, and returns ErrorState if HTTP status `code >= 400`, otherwise returns UnknownState. You can also use Client.SetResultStateCheckFunc to customize the result state check logic.
func (*Response) SetBodyString ¶
Set response body with string content
func (*Response) String ¶
String returns the response body as string that have already been read, could be nil if not read, the following cases are already read:
- `Request.SetResult` or `Request.SetError` is called.
- `Client.DisableAutoReadResponse` and `Request.DisableAutoReadResponse` is not called, and also `Request.SetOutput` and `Request.SetOutputFile` is not called.
func (*Response) SuccessResult ¶
func (r *Response) SuccessResult() interface{}
SuccessResult returns the automatically unmarshalled object if Request.SetSuccessResult is called and ResultState returns SuccessState. Otherwise, return nil.
func (*Response) ToBytes ¶
ToBytes returns the response body as []byte, read body if not have been read.
func (*Response) ToString ¶
ToString returns the response body as string, read body if not have been read.
func (*Response) TotalTime ¶
TotalTime returns the total time of the request, from request we sent to response we received.
func (*Response) Unmarshal ¶
Unmarshal unmarshalls response body into the specified object according to response `Content-Type`.
func (*Response) UnmarshalJson ¶
UnmarshalJson unmarshalls JSON response body into the specified object.
func (*Response) UnmarshalXml ¶
UnmarshalXml unmarshalls XML response body into the specified object.
type ResponseMiddleware ¶
ResponseMiddleware type is for response middleware, called after a response has been received
type ResultState ¶
type ResultState int
ResultState represents the state of the result.
const ( // SuccessState indicates the response is in success state, // and result will be unmarshalled if Request.SetSuccessResult // is called. SuccessState ResultState = iota // ErrorState indicates the response is in error state, // and result will be unmarshalled if Request.SetErrorResult // or Client.SetCommonErrorResult is called. ErrorState // UnknownState indicates the response is in unknown state, // and handler will be invoked if Request.SetUnknownResultHandlerFunc // or Client.SetCommonUnknownResultHandlerFunc is called. UnknownState )
type RetryConditionFunc ¶
RetryConditionFunc is a retry condition, which determines whether the request should retry.
type RetryHookFunc ¶
RetryHookFunc is a retry hook which will be executed before a retry.
type RoundTripFunc ¶
RoundTripFunc is a RoundTripper implementation, which is a simple function.
type RoundTripWrapper ¶
type RoundTripWrapper func(rt RoundTripper) RoundTripper
RoundTripWrapper is client middleware function.
type RoundTripWrapperFunc ¶
type RoundTripWrapperFunc func(rt RoundTripper) RoundTripFunc
RoundTripWrapperFunc is client middleware function, more convenient than RoundTripWrapper.
type RoundTripper ¶
RoundTripper is the interface of req's Client.
type TraceInfo ¶
type TraceInfo struct {
// DNSLookupTime is a duration that transport took to perform
// DNS lookup.
DNSLookupTime time.Duration
// ConnectTime is a duration that took to obtain a successful connection.
ConnectTime time.Duration
// TCPConnectTime is a duration that took to obtain the TCP connection.
TCPConnectTime time.Duration
// TLSHandshakeTime is a duration that TLS handshake took place.
TLSHandshakeTime time.Duration
// FirstResponseTime is a duration that server took to respond first byte since
// connection ready (after tls handshake if it's tls and not a reused connection).
FirstResponseTime time.Duration
// ResponseTime is a duration since first response byte from server to
// request completion.
ResponseTime time.Duration
// TotalTime is a duration that total request took end-to-end.
TotalTime time.Duration
// IsConnReused is whether this connection has been previously
// used for another HTTP request.
IsConnReused bool
// IsConnWasIdle is whether this connection was obtained from an
// idle pool.
IsConnWasIdle bool
// ConnIdleTime is a duration how long the connection was previously
// idle, if IsConnWasIdle is true.
ConnIdleTime time.Duration
// RemoteAddr returns the remote network address.
RemoteAddr net.Addr
// LocalAddr returns the local network address.
LocalAddr net.Addr
}
TraceInfo represents the trace information.
type Transport ¶
type Transport struct {
Headers http.Header
Cookies []*http.Cookie
transport.Options
// contains filtered or unexported fields
}
Transport is an implementation of http.RoundTripper that supports HTTP, HTTPS, and HTTP proxies (for either HTTP or HTTPS with CONNECT).
By default, Transport caches connections for future re-use. This may leave many open connections when accessing many hosts. This behavior can be managed using Transport's CloseIdleConnections method and the MaxIdleConnsPerHost and DisableKeepAlives fields.
Transports should be reused instead of created as needed. Transports are safe for concurrent use by multiple goroutines.
A Transport is a low-level primitive for making HTTP and HTTPS requests. For high-level functionality, such as cookies and redirects, see Client.
Transport uses HTTP/1.1 for HTTP URLs and either HTTP/1.1 or HTTP/2 for HTTPS URLs, depending on whether the server supports HTTP/2, and how the Transport is configured. The DefaultTransport supports HTTP/2. To explicitly enable HTTP/2 on a transport, use golang.org/x/net/http2 and call ConfigureTransport. See the package docs for more about HTTP/2.
Responses with status codes in the 1xx range are either handled automatically (100 expect-continue) or ignored. The one exception is HTTP status code 101 (Switching Protocols), which is considered a terminal status and returned by RoundTrip. To see the ignored 1xx responses, use the httptrace trace package's ClientTrace.Got1xxResponse.
Transport only retries a request upon encountering a network error if the request is idempotent and either has no body or has its Request.GetBody defined. HTTP requests are considered idempotent if they have HTTP methods GET, HEAD, OPTIONS, or TRACE; or if their Header map contains an "Idempotency-Key" or "X-Idempotency-Key" entry. If the idempotency key value is a zero-length slice, the request is treated as idempotent but the header is not sent on the wire.
func (*Transport) CancelRequest
deprecated
CancelRequest cancels an in-flight request by closing its connection. CancelRequest should only be called after Transport.RoundTrip has returned.
Deprecated: Use [Request.WithContext] to create a request with a cancelable context instead. CancelRequest cannot cancel HTTP/2 requests. This may become a no-op in a future release of Go.
func (*Transport) CloseIdleConnections ¶
func (t *Transport) CloseIdleConnections()
CloseIdleConnections closes any connections which were previously connected from previous requests but are now sitting idle in a "keep-alive" state. It does not interrupt any connections currently in use.
func (*Transport) DisableAutoDecode ¶
DisableAutoDecode disable auto-detect charset and decode to utf-8 (enabled by default).
func (*Transport) DisableForceHttpVersion ¶
DisableForceHttpVersion disable force using specified http version (disabled by default).
func (*Transport) DisableH2C ¶
DisableH2C disables HTTP2 over TCP without TLS.
func (*Transport) DisableHTTP3 ¶
func (t *Transport) DisableHTTP3()
func (*Transport) EnableAutoDecode ¶
EnableAutoDecode enable auto-detect charset and decode to utf-8 (enabled by default).
func (*Transport) EnableDump ¶
func (t *Transport) EnableDump(opt *DumpOptions)
EnableDump enables the dump for all requests with specified dump options.
func (*Transport) EnableForceHTTP1 ¶
EnableForceHTTP1 enable force using HTTP1 (disabled by default).
func (*Transport) EnableForceHTTP2 ¶
EnableForceHTTP2 enable force using HTTP2 for https requests (disabled by default).
func (*Transport) EnableForceHTTP3 ¶
EnableForceHTTP3 enable force using HTTP3 for https requests (disabled by default).
func (*Transport) EnableHTTP3 ¶
func (t *Transport) EnableHTTP3()
func (*Transport) GetMaxIdleConns ¶
GetMaxIdleConns returns MaxIdleConns.
func (*Transport) ImpersonateChrome ¶
ImpersonateChrome impersonates Chrome browser (version 120).
func (*Transport) ImpersonateFirefox ¶
ImpersonateFirefox impersonates Firefox browser (version 120).
func (*Transport) ImpersonateSafari ¶
ImpersonateSafari impersonates Safari browser (version 16.6).
func (*Transport) RoundTrip ¶
RoundTrip implements the RoundTripper interface.
For higher-level HTTP client support (such as handling of cookies and redirects), see Get, Post, and the Client type.
Like the RoundTripper interface, the error types returned by RoundTrip are unspecified.
func (*Transport) SetAutoDecodeAllContentType ¶
SetAutoDecodeAllContentType enable try auto-detect charset and decode all content type to utf-8.
func (*Transport) SetAutoDecodeContentType ¶
SetAutoDecodeContentType set the content types that will be auto-detected and decode to utf-8 (e.g. "json", "xml", "html", "text").
func (*Transport) SetAutoDecodeContentTypeFunc ¶
SetAutoDecodeContentTypeFunc set the function that determines whether the specified `Content-Type` should be auto-detected and decode to utf-8.
func (*Transport) SetCommonHeaderOrder ¶
SetCommonHeaderOrder set the order of the http header requests fired from the client (case-insensitive). For example:
client.R().SetCommonHeaderOrder(
"custom-header",
"cookie",
"user-agent",
"accept-encoding",
).Get(url
func (*Transport) SetCommonPseudoHeaderOder ¶
func (*Transport) SetDial ¶
func (t *Transport) SetDial(fn func(ctx context.Context, network, addr string) (net.Conn, error)) *Transport
SetDial set the custom DialContext function, only valid for HTTP1 and HTTP2, which specifies the dial function for creating unencrypted TCP connections. If it is nil, then the transport dials using package net.
The dial function runs concurrently with calls to RoundTrip. A RoundTrip call that initiates a dial may end up using a connection dialed previously when the earlier connection becomes idle before the later dial function completes.
func (*Transport) SetDialTLS ¶
func (t *Transport) SetDialTLS(fn func(ctx context.Context, network, addr string) (net.Conn, error)) *Transport
SetDialTLS set the custom DialTLSContext function, only valid for HTTP1 and HTTP2, which specifies an optional dial function for creating TLS connections for non-proxied HTTPS requests (proxy will not work if set).
If it is nil, DialContext and TLSClientConfig are used.
If it is set, the function that set in SetDial is not used for HTTPS requests and the TLSClientConfig and TLSHandshakeTimeout are ignored. The returned net.Conn is assumed to already be past the TLS handshake.
func (*Transport) SetExpectContinueTimeout ¶
SetExpectContinueTimeout set the ExpectContinueTimeout, if non-zero, specifies the amount of time to wait for a server's first response headers after fully writing the request headers if the request has an "Expect: 100-continue" header. Zero means no timeout and causes the body to be sent immediately, without waiting for the server to approve. This time does not include the time to send the request header.
func (*Transport) SetGetProxyConnectHeader ¶
func (t *Transport) SetGetProxyConnectHeader(fn func(ctx context.Context, proxyURL *url.URL, target string) (http.Header, error)) *Transport
SetGetProxyConnectHeader set the GetProxyConnectHeader, which optionally specifies a func to return headers to send to proxyURL during a CONNECT request to the ip:port target. If it returns an error, the Transport's RoundTrip fails with that error. It can return (nil, nil) to not add headers. If GetProxyConnectHeader is non-nil, ProxyConnectHeader is ignored.
func (*Transport) SetHTTP2ConnectionFlow ¶
SetHTTP2ConnectionFlow set the default http2 connection flow, which is the increment value of initial WINDOW_UPDATE frame.
func (*Transport) SetHTTP2HeaderPriority ¶
func (t *Transport) SetHTTP2HeaderPriority(priority http2.PriorityParam) *Transport
SetHTTP2HeaderPriority set the header priority param.
func (*Transport) SetHTTP2MaxHeaderListSize ¶
SetHTTP2MaxHeaderListSize set the http2 MaxHeaderListSize, which is the http2 SETTINGS_MAX_HEADER_LIST_SIZE to send in the initial settings frame. It is how many bytes of response headers are allowed. Unlike the http2 spec, zero here means to use a default limit (currently 10MB). If you actually want to advertise an unlimited value to the peer, Transport interprets the highest possible value here (0xffffffff or 1<<32-1) to mean no limit.
func (*Transport) SetHTTP2PingTimeout ¶
SetHTTP2PingTimeout set the http2 PingTimeout, which is the timeout after which the connection will be closed if a response to Ping is not received. Defaults to 15s
func (*Transport) SetHTTP2PriorityFrames ¶
func (t *Transport) SetHTTP2PriorityFrames(frames ...http2.PriorityFrame) *Transport
SetHTTP2PriorityFrames set the ordered http2 priority frames.
func (*Transport) SetHTTP2ReadIdleTimeout ¶
SetHTTP2ReadIdleTimeout set the http2 ReadIdleTimeout, which is the timeout after which a health check using ping frame will be carried out if no frame is received on the connection. Note that a ping response will is considered a received frame, so if there is no other traffic on the connection, the health check will be performed every ReadIdleTimeout interval. If zero, no health check is performed.
func (*Transport) SetHTTP2SettingsFrame ¶
SetHTTP2SettingsFrame set the ordered http2 settings frame.
func (*Transport) SetHTTP2StrictMaxConcurrentStreams ¶
SetHTTP2StrictMaxConcurrentStreams set the http2 StrictMaxConcurrentStreams, which controls whether the server's SETTINGS_MAX_CONCURRENT_STREAMS should be respected globally. If false, new TCP connections are created to the server as needed to keep each under the per-connection SETTINGS_MAX_CONCURRENT_STREAMS limit. If true, the server's SETTINGS_MAX_CONCURRENT_STREAMS is interpreted as a global limit and callers of RoundTrip block when needed, waiting for their turn.
func (*Transport) SetHTTP2WriteByteTimeout ¶
SetHTTP2WriteByteTimeout set the http2 WriteByteTimeout, which is the timeout after which the connection will be closed no data can be written to it. The timeout begins when data is available to write, and is extended whenever any bytes are written.
func (*Transport) SetIdleConnTimeout ¶
SetIdleConnTimeout set the IdleConnTimeout, which is the maximum amount of time an idle (keep-alive) connection will remain idle before closing itself.
Zero means no limit.
func (*Transport) SetMaxConnsPerHost ¶
SetMaxConnsPerHost set the MaxConnsPerHost, optionally limits the total number of connections per host, including connections in the dialing, active, and idle states. On limit violation, dials will block.
Zero means no limit.
func (*Transport) SetMaxIdleConns ¶
SetMaxIdleConns set the MaxIdleConns, which controls the maximum number of idle (keep-alive) connections across all hosts. Zero means no limit.
func (*Transport) SetMaxResponseHeaderBytes ¶
SetMaxResponseHeaderBytes set the MaxResponseHeaderBytes, which specifies a limit on how many response bytes are allowed in the server's response header.
Zero means to use a default limit.
func (*Transport) SetProxy ¶
SetProxy set the http proxy, only valid for HTTP1 and HTTP2, which specifies a function to return a proxy for a given Request. If the function returns a non-nil error, the request is aborted with the provided error.
The proxy type is determined by the URL scheme. "http", "https", and "socks5" are supported. If the scheme is empty, "http" is assumed.
If Proxy is nil or returns a nil *URL, no proxy is used.
func (*Transport) SetProxyConnectHeader ¶
SetProxyConnectHeader set the ProxyConnectHeader, which optionally specifies headers to send to proxies during CONNECT requests. To set the header dynamically, see SetGetProxyConnectHeader.
func (*Transport) SetReadBufferSize ¶
SetReadBufferSize set the ReadBufferSize, which specifies the size of the read buffer used when reading from the transport. If zero, a default (currently 4KB) is used.
func (*Transport) SetResponseHeaderTimeout ¶
SetResponseHeaderTimeout set the ResponseHeaderTimeout, if non-zero, specifies the amount of time to wait for a server's response headers after fully writing the request (including its body, if any). This time does not include the time to read the response body.
func (*Transport) SetTLSClientConfig ¶
SetTLSClientConfig set the custom TLSClientConfig, which specifies the TLS configuration to use with tls.Client. If nil, the default configuration is used. If non-nil, HTTP/2 support may not be enabled by default.
func (*Transport) SetTLSFingerprint ¶
func (t *Transport) SetTLSFingerprint(clientHelloID utls.ClientHelloID) *Transport
SetTLSFingerprint set the tls fingerprint for tls handshake, will use utls (https://github.com/refraction-networking/utls) to perform the tls handshake, which uses the specified clientHelloID to simulate the tls fingerprint. Note this is valid for HTTP1 and HTTP2, not HTTP3.
func (*Transport) SetTLSHandshake ¶
func (t *Transport) SetTLSHandshake(fn func(ctx context.Context, addr string, plainConn net.Conn) (conn net.Conn, tlsState *tls.ConnectionState, err error)) *Transport
SetTLSHandshake set the custom tls handshake function, only valid for HTTP1 and HTTP2, not HTTP3, it specifies an optional dial function for tls handshake, it works even if a proxy is set, can be used to customize the tls fingerprint.
func (*Transport) SetTLSHandshakeTimeout ¶
SetTLSHandshakeTimeout set the TLSHandshakeTimeout, which specifies the maximum amount of time waiting to wait for a TLS handshake.
Zero means no timeout.
func (*Transport) SetWriteBufferSize ¶
SetWriteBufferSize set the WriteBufferSize, which specifies the size of the write buffer used when writing to the transport. If zero, a default (currently 4KB) is used.
func (*Transport) WrapRoundTrip ¶
func (t *Transport) WrapRoundTrip(wrappers ...HttpRoundTripWrapper) *Transport
WrapRoundTrip adds a transport middleware function that will give the caller an opportunity to wrap the underlying http.RoundTripper.
func (*Transport) WrapRoundTripFunc ¶
func (t *Transport) WrapRoundTripFunc(funcs ...HttpRoundTripWrapperFunc) *Transport
WrapRoundTripFunc adds a transport middleware function that will give the caller an opportunity to wrap the underlying http.RoundTripper.
type UploadCallback ¶
type UploadCallback func(info UploadInfo)
UploadCallback is the callback which will be invoked during multipart upload.
type UploadInfo ¶
type UploadInfo struct {
// parameter name in multipart upload
ParamName string
// filename in multipart upload
FileName string
// total file length in bytes.
FileSize int64
// uploaded file length in bytes.
UploadedSize int64
}
UploadInfo is the information for each UploadCallback call.
Source Files
¶
- client.go
- client_impersonate.go
- decode.go
- digest.go
- dump.go
- header.go
- http.go
- http_request.go
- impersonate.go
- logger.go
- middleware.go
- parallel_download.go
- redirect.go
- req.go
- request.go
- response.go
- retry.go
- roundtrip.go
- server.go
- textproto_reader.go
- trace.go
- transfer.go
- transport.go
- transport_default_other.go
- transport_impersonate.go
Directories
¶
| Path | Synopsis |
|---|---|
|
Package internal contains HTTP internals shared by net/http and net/http/httputil.
|
Package internal contains HTTP internals shared by net/http and net/http/httputil. |
|
bisect
Package bisect can be used by compilers and other programs to serve as a target for the bisect debugging tool.
|
Package bisect can be used by compilers and other programs to serve as a target for the bisect debugging tool. |
|
godebug
Package godebug makes the settings in the $GODEBUG environment variable available to other packages.
|
Package godebug makes the settings in the $GODEBUG environment variable available to other packages. |
|
godebugs
Package godebugs provides a table of known GODEBUG settings, for use by a variety of other packages, including internal/godebug, runtime, runtime/metrics, and cmd/go/internal/load.
|
Package godebugs provides a table of known GODEBUG settings, for use by a variety of other packages, including internal/godebug, runtime, runtime/metrics, and cmd/go/internal/load. |
|
socks
Package socks provides a SOCKS version 5 client implementation.
|
Package socks provides a SOCKS version 5 client implementation. |
|
testcert
Package testcert contains a test-only localhost certificate.
|
Package testcert contains a test-only localhost certificate. |
|
pkg
|
|