Dmitry Telenkov 17 hours ago
parent
commit
78ab8d3591
3 changed files with 89 additions and 1 deletions
  1. 1 1
      go/stepik/4/net_http.go
  2. 63 0
      go/stepik/4/net_task.go
  3. 25 0
      go/stepik/4/server1.go

+ 1 - 1
go/stepik/4/net_http.go

@@ -188,7 +188,7 @@ func newRequestExample() {
 
 
 	// Конвертируем тело ответа в Todo struct
 	// Конвертируем тело ответа в Todo struct
 	var todoStruct Todo
 	var todoStruct Todo
-	err = json.Unmarshl(bodyBytes, &todoStruct)
+	err = json.Unmarshal(bodyBytes, &todoStruct)
 	if err != nil {
 	if err != nil {
 		log.Println(err)
 		log.Println(err)
 	}
 	}

+ 63 - 0
go/stepik/4/net_task.go

@@ -0,0 +1,63 @@
+package main
+
+import (
+	"fmt"
+	"io"
+	"log"
+	"net/http"
+	"net/url"
+)
+
+func main() {
+	// testRequest()
+	testQuery()
+}
+
+// http://127.0.0.1:5555/get
+func testRequest() {
+	// resp, err := http.Get("http://google.com/")
+	resp, err := http.Get("http://127.0.0.1:5555")
+	if err != nil {
+		fmt.Println("error")
+	}
+	defer resp.Body.Close()
+	fmt.Println("~~~~~~~~~~~~~~~~")
+	fmt.Println(resp)
+	/*
+	   fmt.Println("~~~~~~~~~~~~~~~~")
+	   fmt.Println(resp.Body)
+
+	   bytesResp, err := io.ReadAll(resp.Body)
+	   fmt.Println(bytesResp)
+	   fmt.Println("~~~~~~~~~~~~~~~~")
+	   fmt.Println(string(bytesResp))
+	*/
+}
+
+func testQuery() {
+	var name, age string
+
+	fmt.Scan(&name)
+	fmt.Scan(&age)
+
+	baseURL := "http://127.0.0.1:8080/hello"
+	params := url.Values{}
+	params.Add("name", name)
+	params.Add("age", age)
+	fullURL := baseURL + "?" + params.Encode()
+
+	resp, err := http.Get(fullURL)
+	if err != nil {
+		log.Println(err)
+		return
+	}
+	defer resp.Body.Close()
+
+	data, err := io.ReadAll(resp.Body) // читаем ответ
+	if err != nil {
+		log.Println(err)
+		return
+	}
+
+	fmt.Printf("%s", data) // печатаем ответ как строку
+}

+ 25 - 0
go/stepik/4/server1.go

@@ -0,0 +1,25 @@
+package main
+
+import (
+	"fmt"
+	"net/http"
+)
+
+// Обработчик HTTP-запросов
+func handler(w http.ResponseWriter, r *http.Request) {
+	fmt.Println(r.Method) // Тип метода
+	fmt.Println(r.URL)    // запрашиваемый URL
+	// fmt.Println(r.Proto)  // версия протокола
+	w.Write([]byte("Hello!"))
+}
+
+func main() {
+	// Регистрируем обработчик для пути "/"
+	http.HandleFunc("/", handler)
+
+	// Запускаем веб-сервер на порту 8080
+	err := http.ListenAndServe(":8080", nil)
+	if err != nil {
+		fmt.Println("Ошибка запуска сервера:", err)
+	}
+}