
golang语言开发中,如何编写一个转码服务?下面web建站小编给大家简单介绍一下具体实现代码!
客户端调用代码
package main
import (
"fmt"
"net/http"
"strconv"
)
func main() {
res, err := http.Get("http://localhost:8080?url=https://www.chinesegamer.net/gbk.html")
if err != nil {
fmt.Println(err.Error())
return
}
defer res.Body.Close()
contentType := res.Header.Get("Content-Type")
if len(contentType) > 0 {
contentType = contentType + "; "
}
contentType = contentType + "charset=utf-8"
res.Header.Set("Content-Type", contentType)
if res.StatusCode != 200 {
fmt.Println("response Status:", res.Status)
return
}
buf := make([]byte, 1024)
for {
n, err := res.Body.Read(buf)
if n == 0 || err != nil {
break
}
fmt.Print(string(buf[:n]))
}
}
服务端代码调用
package main
import (
"net/http"
"log"
"io/ioutil"
"golang.org/x/net/html/charset"
)
func main() {
http.HandleFunc("/", func(writer http.ResponseWriter, request *http.Request) {
url := request.URL.Query().Get("url")
resp, err := http.Get(url)
if err != nil {
log.Printf("Error fetch url: %v", err)
http.Error(writer, err.Error(), http.StatusInternalServerError)
return
}
defer resp.Body.Close()
body, err := ioutil.ReadAll(resp.Body)
if err != nil {
log.Printf("Error reading body: %v", err)
http.Error(writer, err.Error(), http.StatusInternalServerError)
return
}
srcCharSet, destBody, err := charset.ToUTF8(body, "")
if err != nil {
log.Printf("Error convert charset: %v", err)
http.Error(writer, err.Error(), http.StatusInternalServerError)
return
}
writer.Header().Set("Content-Type", resp.Header.Get("Content-Type"))
writer.Write(destBody)
})
log.Fatal(http.ListenAndServe(":8080", nil))
}
golang如何实现全部转换为同一种编码方式(防止字符乱码)
上面是“如何利用golang语言编写一个转码服务”的全面内容,想了解更多关于 后端开发 内容,请继续关注web建站教程。
当前网址:https://m.ipkd.cn/webs_4350.html
声明:本站提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请发送到邮箱:admin@ipkd.cn,我们会在看到邮件的第一时间内为您处理!

跨平台划词翻译、截图翻译工具——Pot划词翻译
域名投后市场有哪些机会?
世界互联网大会