Функция http.ReadResponse
Функция http.ReadResponse читает HTTP-ответ из переданного
сетевого соединения и возвращает структуру http.Response.
В первый параметр функция принимает объект net.Conn,
из которого будет производиться чтение. Во второй параметр
передается указатель на объект http.Request, который
используется для проверки совместимости версий HTTP.
Функция автоматически обрабатывает заголовки и тело ответа.
Синтаксис
http.ReadResponse(conn net.Conn, req *http.Request) (*http.Response, error)
Пример
Давайте отправим HTTP GET запрос и прочитаем ответ с помощью
функции http.ReadResponse:
package main
import (
"fmt"
"net"
"net/http"
)
func main() {
conn, err := net.Dial("tcp", "example.com:80")
if err != nil {
fmt.Println("Connection error:", err)
return
}
defer conn.Close()
req, _ := http.NewRequest("GET", "http://example.com", nil)
req.Write(conn)
res, err := http.ReadResponse(conn, req)
if err != nil {
fmt.Println("Read response error:", err)
return
}
defer res.Body.Close()
fmt.Println("Status:", res.Status)
fmt.Println("Content-Type:", res.Header.Get("Content-Type"))
}
Результат выполнения кода:
"Status: 200 OK"
"Content-Type: text/html; charset=UTF-8"
Пример
Давайте обработаем ошибку, которая возникает при чтении ответа от сервера с неверным форматом данных:
package main
import (
"fmt"
"net"
"net/http"
)
func main() {
conn, err := net.Dial("tcp", "example.com:80")
if err != nil {
fmt.Println("Connection error:", err)
return
}
defer conn.Close()
conn.Write([]byte("INVALID REQUEST\r\n\r\n"))
req, _ := http.NewRequest("GET", "http://example.com", nil)
res, err := http.ReadResponse(conn, req)
if err != nil {
fmt.Println("Error reading response:", err)
return
}
defer res.Body.Close()
}
Результат выполнения кода:
"Error reading response: malformed HTTP response"
Смотрите также
-
функцию
http.ReadResponse,
которая читает HTTP-ответ из соединения -
функцию
http.NewRequest,
которая создает новый HTTP запрос -
функцию
http.Get,
которая выполняет HTTP GET запрос -
функцию
http.Client.Do,
которая выполняет HTTP запрос через клиент