百度翻译接口使用winfrom(测试失败有知道原因的欢迎留言)

目的:为了方便快捷调用翻译工具,ctrl+alt+T(启用程序)、Alt+t(翻译)、Alt+c(退出程序),实现春键盘操作。

缺点:通用翻译免费接口翻译很差

界面:

主代码:

using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Net;
using System.Security.Cryptography;
using System.Text;
using System.Threading.Tasks;
using System.Web;
using System.Windows.Forms;

namespace BaiduTranslate
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {

        }

        private void button1_Click(object sender, EventArgs e)
        {

        }

        /// <summary>
        /// 获取url的返回值
        /// </summary>
        /// <param name="url">eg:http://m.weather.com.cn/atad/101010100.html </param>
        public string GetInfo(string url)
        {
            try
            {
                string strBuff = "";
                Uri httpURL = new Uri(url);
                ///HttpWebRequest类继承于WebRequest,并没有自己的构造函数,需通过WebRequest的Creat方法 建立,并进行强制的类型转换 
                HttpWebRequest httpReq = (HttpWebRequest)WebRequest.Create(httpURL);
                ///通过HttpWebRequest的GetResponse()方法建立HttpWebResponse,强制类型转换 
                HttpWebResponse httpResp = (HttpWebResponse)httpReq.GetResponse();
                ///GetResponseStream()方法获取HTTP响应的数据流,并尝试取得URL中所指定的网页内容 
                ///若成功取得网页的内容,则以System.IO.Stream形式返回,若失败则产生ProtoclViolationException错 误。在此正确的做法应将以下的代码放到一个try块中处理。这里简单处理 
                Stream respStream = httpResp.GetResponseStream();
                ///返回的内容是Stream形式的,所以可以利用StreamReader类获取GetResponseStream的内容,并以 
                //StreamReader类的Read方法依次读取网页源程序代码每一行的内容,直至行尾(读取的编码格式:UTF8) 
                StreamReader respStreamReader = new StreamReader(respStream, Encoding.UTF8);//Encoding.UTF8
                strBuff = respStreamReader.ReadToEnd();
                return strBuff;
            }
            catch
            {

                return "400";
            }
        }

        private void button2_Click(object sender, EventArgs e)
        {

        }


        /// <summary>
        /// 加密成32位小写的MD5
        /// </summary>
        /// <param name="myString">传入需要加密的字符串</param>
        /// <returns>返回加密后的字符串</returns>
        public static string GetMD5(string myString)
        {
            string res = "";
            MD5 md5 = MD5.Create();//实例化一个md5对像
            // 加密后是一个字节类型的数组,这里要注意编码UTF8/Unicode等的选择 
            byte[] s = md5.ComputeHash(Encoding.UTF8.GetBytes(myString));
            // 通过使用循环,将字节类型的数组转换为字符串,此字符串是常规字符格式化所得
            for (int i = 0; i < s.Length; i++)
            {
                // 将得到的字符串使用32进制类型格式。格式后的字符是小写的字母,如果使用大写(X)则格式后的字符是大写字符
                res = res + s[i].ToString("x");
            }
            return res;
        }


        private void button3_Click(object sender, EventArgs e)
        {
            //  http://api.fanyi.baidu.com/api/trans/vip/translate?q=apple&from=en&to=zh&appid=2015063000000001&salt=1435660288&sign=f89f9594663708c1605f3d736d01d2d4
            if (string.IsNullOrEmpty(textBox1.Text))
            {
                //翻译成英文

            }
            else
            {
                //翻译成中文
                string appid = "自己的百度Appid";
                string q = textBox1.Text;
                string salt = "1235485";
                string key = "自己的百度秘钥";
                string st = appid + q + salt + key;
                string sign = GetMD5(st);
                string dst = "";
               
                    //接收JSON
                    string Json = GetInfo("http://api.fanyi.baidu.com/api/trans/vip/translate?q=" + q + "&from=auto&to=auto&appid=" + appid + "&salt=" + salt + "&sign=" + sign);

                    JObject jo = (JObject)JsonConvert.DeserializeObject(Json); // 反序列化对象
                    // string error_code = jo["error_code"].ToString();//接收错误时的JSON

                    try
                    {

                    //JSON数组解析
                    var jsonObj = new JObject();
                    jsonObj = JObject.Parse(Json);//jsontest即为接收到的Json数据
                    JArray jlist = JArray.Parse(jsonObj["trans_result"].ToString()); //数组trans_result集合
                    //一层一层的把数组分为一个组合
                    foreach (var item in jlist)
                    {
                        dst += item["dst"].ToString() + "\n";//译文字符拼接

                        // dst += item["src"].ToString() + "\n"; //原文字符拼接
                    }

                    textBox2.Text = dst;//赋值给译文
                }
                catch
                {
                    string error_code = jo["error_code"].ToString();
                    textBox2.Text = error_code;//赋值给译文
                }
            }


        }

        private void button1_Click_1(object sender, EventArgs e)
        {
            System.Environment.Exit(0); 
        }

       //public class Item
       // {
       //     /// <summary>
       //     /// 原文
       //     /// </summary>
       //    public string src { get; set; }

       //     /// <summary>
       //     /// 译文
       //     /// </summary>
       //    public string dst { get; set; }
       // }
       //public class trans_result
       //{
       //    /// <summary>
       //    /// Item列表
       //    /// </summary>
       //    public List<Item> Item { get; set; }
       //}

    }

}

配合上传案例使用:https://download.csdn.net/download/weixin_42401291/10752488

配合桌面快捷方式使用:

如需合作加QQ:1174787689 备注合作
本人可开发:.Net、数据库、小程序、网站、App...,你敢来我就敢做

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

智慧方

开发程序不易

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值