func (r *Request) Put(url string) (*Response, error) {
	return r.Execute(MethodPut, url)
}
Put method does PUT HTTP request. It's defined in section 4.3.4 of RFC7231.
package resty
import (
	"encoding/base64"
	"encoding/json"
	"encoding/xml"
	"fmt"
	"io"
	"net"
	"net/url"
	"reflect"
	"strings"
)
type SRVRecord struct {
	Service string
	Domain  string
}
func (r *Request) SetHeader(header, value string) *Request {
	r.Header.Set(header, value)
	return r
}
func (r *Request) SetHeaders(headers map[string]string) *Request {
	for h, v := range headers {
		r.SetHeader(h, v)
	}
	return r
}
func (r *Request) SetQueryParam(param, value string) *Request {
	r.QueryParam.Set(param, value)
	return r
}
func (r *Request) SetQueryParams(params map[string]string) *Request {
	for p, v := range params {
		r.SetQueryParam(p, v)
	}
	return r
}
func (r *Request) SetMultiValueQueryParams(params url.Values) *Request {
	for p, v := range params {
		for _, pv := range v {
			r.QueryParam.Add(p, pv)
		}
	}
	return r
}
func (r *Request) SetQueryString(query string) *Request {
	params, err := url.ParseQuery(strings.TrimSpace(query))
	if err == nil {
		for p, v := range params {
			for _, pv := range v {
				r.QueryParam.Add(p, pv)
			}
		}
	} else {
		r.client.Log.Printf("ERROR %v", err)
	}
	return r
}
func (r *Request) SetFormData(data map[string]string) *Request {
	for k, v := range data {
		r.FormData.Set(k, v)
	}
	return r
}
func (r *Request) SetMultiValueFormData(params url.Values) *Request {
	for k, v := range params {
		for _, kv := range v {
			r.FormData.Add(k, kv)
		}
	}
	return r
}
func (r *Request) SetBody(body interface{}) *Request {
	r.Body = body
	return r
}
func (r *Request) SetResult(res interface{}) *Request {
	r.Result = getPointer(res)
	return r
}
func (r *Request) SetError(err interface{}) *Request {
	r.Error = getPointer(err)
	return r
}
func (r *Request) SetFile(param, filePath string) *Request {
	r.isMultiPart = true
	r.FormData.Set("@"+param, filePath)
	return r
}
func (r *Request) SetFiles(files map[string]string) *Request {
	r.isMultiPart = true
	for f, fp := range files {
		r.FormData.Set("@"+f, fp)
	}
	return r
}
func (r *Request) SetFileReader(param, fileName string, reader io.Reader) *Request {
	r.isMultiPart = true
	r.multipartFiles = append(r.multipartFiles, &File{
		Name:      fileName,
		ParamName: param,
		Reader:    reader,
	})
	return r
}
func (r *Request) SetMultipartField(param, fileName, contentType string, reader io.Reader) *Request {
	r.isMultiPart = true
	r.multipartFields = append(r.multipartFields, &multipartField{
		Param:       param,
		FileName:    fileName,
		ContentType: contentType,
		Reader:      reader,
	})
	return r
}
func (r *Request) SetContentLength(l bool) *Request {
	r.setContentLength = true
	return r
}
func (r *Request) SetBasicAuth(username, password string) *Request {
	r.UserInfo = &User{Username: username, Password: password}
	return r
}
func (r *Request) SetAuthToken(token string) *Request {
	r.Token = token
	return r
}
func (r *Request) SetOutput(file string) *Request {
	r.outputFile = file
	r.isSaveResponse = true
	return r
}
func (r *Request) SetSRV(srv *SRVRecord) *Request {
	r.SRV = srv
	return r
}
func (r *Request) SetDoNotParseResponse(parse bool) *Request {
	r.notParseResponse = parse
	return r
}
func (r *Request) SetPathParams(params map[string]string) *Request {
	for p, v := range params {
		r.pathParams[p] = v
	}
	return r
}
func (r *Request) ExpectContentType(contentType string) *Request {
	r.fallbackContentType = contentType
	return r
}
func (r *Request) SetJSONEscapeHTML(b bool) *Request {
	r.jsonEscapeHTML = b
	return r
}
func (r *Request) Get(url string) (*Response, error) {
	return r.Execute(MethodGet, url)
}
func (r *Request) Head(url string) (*Response, error) {
	return r.Execute(MethodHead, url)
}
func (r *Request) Post(url string) (*Response, error) {
	return r.Execute(MethodPost, url)
}