百度翻译软件
对接的是百度翻译
下面直接贴代码,附带源码和成品,请自行下载
package main
import (
"bufio"
"bytes"
"encoding/json"
"fmt"
"io/ioutil"
"net/http"
"os"
"strings"
)
type PostJSONData struct {
Kw string `json:"kw"`
}
type baiduReturnData struct {
Errno int `json:"errno"`
Data []baiduData `json:"data"`
}
type baiduData struct {
K string `json:"k"`
V string `json:"v"`
}
func main() {
for {
fmt.Println(`
韩昊杰go语言软件
百度翻译工具
输入quit即可退出
`)
var scan string
fmt.Print("请输入你要翻译的词语:")
reader := bufio.NewReader(os.Stdin) // 标准输入输出
scan, _ = reader.ReadString('\n') // 回车结束
scan = strings.TrimSpace(scan) // 去除最后一个空格
if scan == "quit" {
os.Exit(1)
}
var postData PostJSONData
postData.Kw = scan
data, _ := PostJSON("https://fanyi.baidu.com/sug", postData)
var baiduData baiduReturnData
json.Unmarshal([]byte(data), &baiduData)
fmt.Println("------------------------------下面是结果------------------------------")
fmt.Println("")
for _, value := range baiduData.Data {
fmt.Printf("输入的是:%v,翻译的结果:%v\n", value.K, value.V)
}
fmt.Println("")
fmt.Println("------------------------------上面面是结果------------------------------")
fmt.Println("再次输入内容即可再次查询")
}
}
func PostJSON(uri string, obj interface{}) ([]byte, error) {
jsonData := make([]byte, 0, 0)
if str, ok := obj.(string); ok {
jsonData = []byte(str)
} else {
var err error
jsonData, err = json.Marshal(obj)
if err != nil {
return nil, err
}
}
jsonData = bytes.ReplaceAll(jsonData, []byte("\\u003c"), []byte("<"))
jsonData = bytes.ReplaceAll(jsonData, []byte("\\u003e"), []byte(">"))
jsonData = bytes.ReplaceAll(jsonData, []byte("\\u0026"), []byte("&"))
body := bytes.NewBuffer(jsonData)
response, err := http.Post(uri, "application/json;charset=utf-8", body)
if err != nil {
return nil, err
}
defer response.Body.Close()
if response.StatusCode != http.StatusOK {
return nil, fmt.Errorf("http get error : uri=%v , statusCode=%v", uri, response.StatusCode)
}
return ioutil.ReadAll(response.Body)
}
评论 (0)