Google 翻译API Demo

接上篇 Google翻译API(B/S调用和C/S调用)

     上篇里提到的接口调用方法是get方式,这样有个问题,每次请求翻译的内容不能超过url允许的长度。需要改成post方式才行,但是google没有提供post方式的API请求,怎么办呢?在通过网上一番资料的查找,在一位哥们的博客里看到了解决方案,不过他用的是java版的,对应post地址和参数,写出了.net版的。加上朗读的功能,程序界面如下:

        /// <summary>
        /// Post方式获取翻译
        /// </summary>
        /// <param name="sourceText"></param>
        /// <param name="langPair"></param>
        /// <returns></returns>
        private static string TranslatePostMethod(string sourceText, string langPair)
        {
            string fromLan = langPair; //原始语言
            string toLan = langPair.ToLower() == "zh" ? "en" : "zh"; //目标语言 这里只针对中英互转
            HttpWebRequest requestScore = (HttpWebRequest)WebRequest.Create("http://translate.google.com/translate_t#");
            StringBuilder postContent = new StringBuilder();
            Encoding myEncoding = Encoding.UTF8;
            postContent.Append(HttpUtility.UrlEncode("hl", myEncoding));
            postContent.Append("=");
            postContent.Append(HttpUtility.UrlEncode("en", myEncoding));
            postContent.Append("&");
            postContent.Append(HttpUtility.UrlEncode("ie", myEncoding));
            postContent.Append("=");
            postContent.Append(HttpUtility.UrlEncode("UTF-8", myEncoding));
            postContent.Append("&");
            postContent.Append(HttpUtility.UrlEncode("sl", myEncoding));
            postContent.Append("=");
            postContent.Append(HttpUtility.UrlEncode(fromLan, myEncoding));
            postContent.Append("&");
            postContent.Append(HttpUtility.UrlEncode("text", myEncoding));
            postContent.Append("=");
            postContent.Append(HttpUtility.UrlEncode(sourceText, myEncoding));
            postContent.Append("&");
            postContent.Append(HttpUtility.UrlEncode("tl", myEncoding));
            postContent.Append("=");
            postContent.Append(HttpUtility.UrlEncode(toLan, myEncoding));

            byte[] data = Encoding.ASCII.GetBytes(postContent.ToString());
            requestScore.UserAgent = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)";
            requestScore.Method = "Post";
            //requestScore.ContentType = "application/x-www-form-urlencoded;charset=gb2312";
            requestScore.ContentLength = data.Length;
            requestScore.KeepAlive = true;
            requestScore.Timeout = (6 * 60 * 1000);
            requestScore.ProtocolVersion = HttpVersion.Version10;

            Stream stream = requestScore.GetRequestStream();
            stream.Write(data, 0, data.Length);
            stream.Close();
            string content = string.Empty;
            try
            {
                System.Net.ServicePointManager.Expect100Continue = false;
                HttpWebResponse responseSorce = (HttpWebResponse)requestScore.GetResponse();
                StreamReader reader = new StreamReader(responseSorce.GetResponseStream());
                content = reader.ReadToEnd();
                responseSorce.Close();
                reader.Dispose();
                stream.Dispose();
            }
            catch (WebException ex)
            {
                HttpWebResponse responseSorce = (HttpWebResponse)ex.Response;//得到请求网站的详细错误提示
                StreamReader reader = new StreamReader(responseSorce.GetResponseStream());
                content = reader.ReadToEnd();
                responseSorce.Close();
                reader.Dispose();
                stream.Dispose();
            }
            finally
            {
                requestScore.Abort();
            }
            string reg = @"<(?<HtmlTag>[\w]+)[^>]*\s[iI][dD]=(?<Quote>[""']?)result_box(?(Quote)\k<Quote>)[""']?[^>]*>((?<Nested><\k<HtmlTag>[^>]*>)|</\k<HtmlTag>>(?<-Nested>)|.*?)*</\k<HtmlTag>>"; //返回的是一个html页面,需匹配出翻译内容
            Regex r = new Regex(reg);
            MatchCollection mcItem = r.Matches(content);
            string result = ConvertHtmlToText(mcItem[0].Value);
            return "post:" + result;
        }

可执行程序下载:http://download.csdn.net/source/3499399

源代码下载:http://download.csdn.net/source/3499392

参考资料:

1.Google翻译post提交无长度限制的在线翻译例子

2.使用正则表达式匹配嵌套Html标签

3.使用正则表达式将Html转换为纯文本

时间: 2024-12-09 11:14:09

Google 翻译API Demo的相关文章

Google翻译API(B/S调用和C/S调用)

浏览器调用: <html> <head> <script type="text/javascript" src="http://www.google.com/jsapi"></script> <script type="text/javascript"> <!-- google.load("language", "1"); function

Google翻译api如何批量翻译

问题描述 Google翻译api内容是下面这个网址http://code.google.com/apis/ajaxlanguage/documentation/#HelloWorld<scripttype="text/javascript"src="http://www.google.com/jsapi"></script><scripttype="text/javascript">google.load(&q

asp.net利用google的api做翻译_实用技巧

说明:google提供了一组API可以给我们很方便的实现语言翻译功能,对于我们(中国人)而言,常用的是中文与英文的互译.大家英文好的可以看看GOOGLE的文档:http://code.google.com/apis/ajaxlanguage/documentation/reference.html  这篇文章原创在:http://blog.moozi.net/archives/2008/10/16/the-realization-of-web-service-of-full-text-trans

google maps api document 中文翻译

google maps api document 中文翻译- -Tag: API,MAPS,GOOGLE                         Google Maps API 可以让你在你自己的网页上嵌入google地图.要使用这个API,你需要上这里去 http://www.google.com/apis/maps/signup.htm 申请一个API key    并按照下面的说明来做.这个API是新的,所以以完美的文档的要求来说,它可能会有一些小错误.容忍我们,我们将填补这些漏洞

Google翻译接口(PHP API)

/* Google翻译PHP接口  * 官成文 2009-03-28  * http://blog.csdn.net/aprin/  * 注意:如果翻译文本为UTF-8编码,则要删去mb_convert_encoding函数  */ class Google_API_translator {  public $url = "http://translate.google.com/translate_t"; public $text = "";//翻译文本 publi

基于google map api开发web和google earth的KML地标插件

KML文件很好做,在你的google earth(以下简称GE)中选择你自己的或是别人的marker或layer,就可以保存成静态的地标或图层信息(kmz或kml格式),发送给你的朋友,用他的GE打开你的文件就可以看到你所标注的marker信息. 这些相关的文章让我迷失了好一段时间,不过,我想要的是动态的地标.类似于EEMAP那样的GE插件.下面我将讲述它的工作原理和制做方法. 先说几个概念,google map api是基于javascript+xml等技术实现的,另一款产品google ea

Google Chart API 参考 中文版

Google Chart API 参考 中文版 文档信息 翻译: Cloudream ,最后修改:02/22/2008 06:11:08 英文版版权归 Google , 转载此中文版必须以链接形式注明原文地址.译者信息及本声明. API 参考:http://labs.cloudream.name/google/chart/api.html 常见问题:http://labs.cloudream.name/google/chart/faq.html 简介 Google Chart API 为您提供动

谷歌自动翻译-谷歌翻译api怎样能打开网页默认自动翻译

问题描述 谷歌翻译api怎样能打开网页默认自动翻译 <br> function googleTranslateElementInit() {<br> new google.translate.TranslateElement({<br> pageLanguage: 'en',<br> includedLanguages: 'en,zh-CN,de',<br> layout: google.translate.TranslateElement.Fl

如何将经纬度利用Google Map API显示C# VS2005 Sample Code

原文 如何将经纬度利用Google Map API显示C# VS2005 Sample Code 日前写了一篇如何用GPS抓取目前所在,并回传至资料库储存,这篇将会利用这些回报的资料,将它显示在地图上,这个做法有两种,最简单的就是直接传值到Google Maps上.   举例来说,当我们知道经纬度后,只要将数据套到以下网址即可. http://maps.google.com/maps?q=25.048346%2c121.516396 在参数q=后面,就可以加上经纬度了. 25.048346是La