百度翻译API,C# demo

protected void Page_Load(object sender, EventArgs e)
        {
            var query = "高度600米";
            var text = new TransCore().GetTransResult(query, "auto", "en");
            Response.Write(text);
        }

  

public class TransCore
    {
        private TransApi api;
        public TransCore()
        {
            api = new TransApi("xxxxxxxxxx", "mAepVM9I5lSew6X5qKXY");
        }

        public string GetTransResult(string query, string from, string to)
        {
            return api.getTransResult(query, from, to);
        }
    }

  

public class TransApi
    {
        private static string TRANS_API_HOST = "http://api.fanyi.baidu.com/api/trans/vip/translate";
        private string appid;
        private string securityKey;

        public TransApi(string appid, string securityKey)
        {
            this.appid = appid;
            this.securityKey = securityKey;
        }

        public string getTransResult(string query, string from, string to)
        {
            Dictionary<string, string> Params = buildParams(query, from, to);

            return Utils.HttpGet(getUrlWithQueryString(TRANS_API_HOST, Params));
        }

        public static string getUrlWithQueryString(string url, Dictionary<string, string> Params)
        {
            if (Params == null) {
                return url;
            }

            StringBuilder builder = new StringBuilder(url);
            if (url.Contains("?"))
            {
                builder.Append("&");
            }
            else
            {
                builder.Append("?");
            }

            int i = 0;
            foreach(var key in Params.Keys)
            {
                string value = Params[key];
                if (value == null)
                { 
                    // 过滤空的key
                    continue;
                }

                if (i != 0)
                {
                    builder.Append('&');
                }

                builder.Append(key);
                builder.Append('=');
                builder.Append(HttpUtility.UrlEncode(value));

                i++;
            }

            return builder.ToString();
        }

        private Dictionary<string, string> buildParams(string query, string from, string to)
        {
            Dictionary<string, string> Params = new Dictionary<string, string>();
            Params.Add("q", query);
            Params.Add("from", from);
            Params.Add("to", to);
            Params.Add("appid", appid);

            // 随机数
            string salt = DateTime.Now.Ticks.ToString();
            Params.Add("salt", salt);

            // 签名
            string src = appid + query + salt + securityKey; // 加密前的原文
            Params.Add("sign", Utils.MD5(src));

            return Params;
        }
    }

  

public static string MD5(string pwd)
        {
            MD5 md5 = new MD5CryptoServiceProvider();
            byte[] data = System.Text.Encoding.UTF8.GetBytes(pwd);
            byte[] md5data = md5.ComputeHash(data);
            md5.Clear();
            string str = "";
            for (int i = 0; i < md5data.Length; i++)
            {
                str += md5data[i].ToString("x").PadLeft(2, '0');

            }
            return str;
        }

  

/// <summary>
        /// HTTP GET方式请求数据.
        /// </summary>
        /// <param name="url">URL.</param>
        /// <returns></returns>
        public static string HttpGet(string url)
        {
            HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(url);
            request.Method = "GET";
            //request.ContentType = "application/x-www-form-urlencoded";
            request.Accept = "*/*";
            request.Timeout = 15000;
            request.AllowAutoRedirect = false;

            WebResponse response = null;
            string responseStr = null;

            try
            {
                response = request.GetResponse();

                if (response != null)
                {
                    StreamReader reader = new StreamReader(response.GetResponseStream(), Encoding.UTF8);
                    responseStr = reader.ReadToEnd();
                    reader.Close();
                }
            }
            catch (Exception)
            {
                throw;
            }
            finally
            {
                request = null;
                response = null;
            }

            return responseStr;
        }

  

posted @ 2017-11-30 00:23  乐哈哈1  阅读(528)  评论(0编辑  收藏  举报