package main
import (
"bytes"
"fmt"
"io"
"net/http"
"net/url"
"unicode/utf8"
)
func post(reqUrl string, headers map[string]string, reqProxy string) (string, error) {
var client http.Client
if reqProxy != "" {
proxy, err := url.Parse(reqProxy)
if err != nil {
return "Parse req_proxy fail", err
}
client = http.Client{
Timeout: 5 * client.Timeout,
Transport: &http.Transport{
Proxy: http.ProxyURL(proxy),
},
}
} else {
client = http.Client{
Timeout: 5 * client.Timeout,
}
}
// map[type]type
data := "{\"personname\":\"张三\",\"age\":18,\"high\":182,\"sex\":\"男\",\"class\":{\"classname\":\"1班\",\"grade\":3,\"tt\":{\"a\":\"b\"}},\"message\":\"测试成功!\"}"
req, err := http.NewRequest("POST", reqUrl, bytes.NewReader([]byte(data)))
if err != nil {
return "", err
}
for key, value := range headers {
req.Header.Set(key, value)
}
resp, err := client.Do(req)
if err != nil {
return "", err
}
body, err := io.ReadAll(resp.Body)
if err != nil {
return "", err
}
fmt.Println(body)
response := string(body)
return response, nil
}
func request(reqUrl string, headers map[string]string, reqProxy string) (string, error) {
var client http.Client
if reqProxy != "" {
proxy, err := url.Parse(reqProxy)
if err != nil {
return "Parse req_proxy fail", err
}
client = http.Client{
Timeout: 5 * client.Timeout,
Transport: &http.Transport{
Proxy: http.ProxyURL(proxy),
},
}
} else {
client = http.Client{
Timeout: 5 * client.Timeout,
}
}
req, err := http.NewRequest("GET", reqUrl, nil)
if err != nil {
return "", err
}
for key, value := range headers {
req.Header.Set(key, value)
}
resp, err := client.Do(req)
if err != nil {
return "", err
}
body, err := io.ReadAll(resp.Body)
if err != nil {
return "", err
}
fmt.Println(utf8.FullRune(body))
response := string(body)
return response, nil
}
func main() {
headers := map[string]string{
"user-agent": "test",
}
content, _ := post("http://httpbin.org/post", headers, "")
fmt.Println(content)
}
返回的content里面中文是Unicode的形式的 怎么才能输出中文形式的呢