Этот сайт использует cookies. Продолжение работы с сайтом означает, что Вы согласны!
Структура Request: HTTP-запрос
Структура Request
из пакета net/http
описывает HTTP-запрос. Объявление структуры:
// import "net/url"
type Request struct {
Method string
URL *url.URL
Proto string
ProtoMajor int
ProtoMinor int
Header Header
Body io.ReadCloser
GetBody func() (io.ReadCloser, error)
ContentLength int64
TransferEncoding []string
Close bool
Host string
Form url.Values
PostForm url.Values
MultipartForm *multipart.Form
Trailer Header
RemoteAddr string
RequestURI string
TLS *tls.ConnectionState
Cancel <-chan struct{}
Response *Response
ctx context.Context
}
Создать экземпляр структуры Request
позволяет функция NewRequest()
. Формат функции:
http.NewRequest(method string, url string,
body io.Reader) (*http.Request, error)
В первом параметре указывается метод передачи данных: GET
, POST
, HEAD
и др. Во втором параметре передается URL-адрес. В третьем параметре можно указать поток ввода или значение nil
. Функция возвращает два значения. Через первое возвращаемое значение доступен указатель на экземпляр структуры Request
. Через второе возвращаемое значение доступен объект ошибки или значение nil
, если операция выполнена успешно. Пример:
req, err := http.NewRequest("GET", "http://localhost/index.php?x=5", nil)
if err != nil {
fmt.Println(err)
return
}
// Название робота
req.Header.Set("User-Agent", "MySpider/1.0")
// Откуда выполнен переход
req.Header.Set("Referer", "/index.php")
fmt.Println(req.Method) // GET
fmt.Println(req.URL) // http://localhost/index.php?x=5
fmt.Println(req.Proto) // HTTP/1.1
fmt.Println(req.Host) // localhost
Выполнить запрос на основе экземпляра структуры Request
позволяет метод Do()
структуры Client
. Формат метода:
(*http.Client).Do(req *http.Request) (*http.Response, error)
Структура Request
содержит следующие основные методы (полный список смотрите в документации):
AddCookie()
— добавляет cookies. Формат метода:
(*http.Request).AddCookie(c *http.Cookie)
Пример:
req.AddCookie(&http.Cookie{Name: "a", Value: "12"})
Cookie()
— позволяет получить cookies с указанным именем. Формат метода:
(*http.Request).Cookie(name string) (*http.Cookie, error)
Пример:
fmt.Println(req.Cookie("a")) // a=12 <nil>
fmt.Println(req.Cookie("b")) // http: named cookie not present
Cookies()
— возвращает слайс со всеми cookies. Формат метода:
(*http.Request).Cookies() []*http.Cookie
Пример:
fmt.Println(req.Cookies()) // [a=12]
SetBasicAuth()
— задает логин и пароль для аутентификации. Формат метода:
(*http.Request).SetBasicAuth(username string, password string)
Пример:
req.SetBasicAuth("user", "password")
BasicAuth()
— позволяет получить логин и пароль для аутентификации. Формат метода:
(*http.Request).BasicAuth() (username string, password string,
ok bool)
Пример:
fmt.Println(req.BasicAuth()) // user password true
UserAgent()
— возвращает значение заголовкаUser-Agent
(название робота). Формат метода:
(*http.Request).UserAgent() string
Пример:
req.Header.Set("User-Agent", "MySpider/1.0")
fmt.Println(req.UserAgent()) // MySpider/1.0
Referer()
— возвращает значение заголовкаReferer
(откуда был выполнен переход). Формат метода:
(*http.Request).Referer() string
Пример:
req.Header.Set("Referer", "/index.php")
fmt.Println(req.Referer()) // /index.php
FormValue()
— позволяет получить данные формы по ключу (см. разд. 20.9). Формат метода:
(*http.Request).FormValue(key string) string
Write()
— записывает параметры запроса в поток. Формат метода:
(*http.Request).Write(w io.Writer) error
Пример:
buf := &bytes.Buffer{}
req.Write(buf)
fmt.Println(string(buf.Bytes()))
Результат:
GET /index.php?x=5 HTTP/1.1
Host: localhost
User-Agent: MySpider/1.0
Cookie: a=12
Referer: /index.php
Реквизиты
ЮMoney (Yandex-деньги): 410011140483022
ПАО Сбербанк:
Счет: 40817810855006152256
Реквизиты банка:
Наименование: СЕВЕРО-ЗАПАДНЫЙ БАНК ПАО СБЕРБАНК
Корреспондентский счет: 30101810500000000653
БИК: 044030653
КПП: 784243001
ОКПО: 09171401
ОКОНХ: 96130
Скриншот реквизитов