当前位置: 首页 > 图文教程 > 网络编程 > ASP.NET > asp.net Google的translate工具翻译 API

ASP.NET
不同映射模式下的直线输出的效果问题
ASP.NET开发下的MVC设计模式的实现
ASP.NET编写应用程序的十大技巧
ASP.NET中使用AJAX的简单方法
ASP.NET MVC实现自己的视图引擎
认识asp.net会话状态
ASP.NET实现页面传值的几种方法
.NET中容易混淆的几组重要概念
详解.NET中的动态编译技术
如何使用ASP.Net加密Cookie
ASP.NET 2.0跨网页提交的三种方法
ASP.NET 2.0创建母版页引来的麻烦
.Net整合其他平台的一些探讨
ASP.NET编程经验技巧10则
最佳实践 ADO.NET实用经验无保留曝光
在.NET上执行多线程操作要考虑的两大因素
.Net开发 细说Visual Basic.Net
ASP.NET网络编程中经常用到的27个函数集
ASP.NET防止用户多次登录的方法
对ASP.NET MVC项目中的视图做单元测试

ASP.NET 中的 asp.net Google的translate工具翻译 API


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-09-13   浏览: 181 ::
收藏到网摘: n/a

很久前的一天,我想使用这个东西,然后看了下,GooGle的Translate工具目前没有公开API,还是一个逐渐完善的过程,另一方面,利用一段很小的程序就可以得到我们想要的效果。 在这篇,我就利用C#写一个小程序,翻译:
思路是这样的:
1:发送POST(或者GET)
2:获取POST(或者GET)的响应
3:正则匹配我们想要的值。
发生POST(或者GET)的函数:
复制代码 代码如下:

public static string GetGetRequest(string urlP,string encode){
if(null==urlP) return null;
string StrRetP = null;
Stream dataStream = null;
try{
HttpWebRequest myHttpWebRequest=(HttpWebRequest)WebRequest.Create(urlP);
myHttpWebRequest.Timeout = 10000; // 10 secs
HttpWebResponse Objresponse =(HttpWebResponse)myHttpWebRequest.GetResponse();
//Encoding enc = Encoding.GetEncoding(1252); // Windows default Code Page
if(Objresponse.StatusDescription == "OK"){//HttpStatusCode.OK
dataStream = Objresponse.GetResponseStream ();
Encoding objE = String.IsNullOrEmpty(encode)?Encoding.GetEncoding(0):Encoding.GetEncoding(encode);
StreamReader r = new StreamReader(dataStream,objE);
StrRetP= r.ReadToEnd();
}
}catch(Exception e){
StrRetP =e.Message;
}finally{
if(null!=dataStream) dataStream.Close();
}
return StrRetP;
}

这个我在前面的一些文章中有所介绍。
然后正则匹配的函数:
复制代码 代码如下:

public static string GetMatchString(string text,string pattern,int point){
if(String.IsNullOrEmpty(text)||String.IsNullOrEmpty(pattern))return String.Empty;
Regex rx = new Regex(pattern,RegexOptions.Compiled | RegexOptions.IgnoreCase | RegexOptions.Multiline);
Match match = rx.Match(text);
string word="";
if (match.Success) word = match.Groups[point].Value;
return word.Trim();
}

这个数根据一个正则表达数,返回匹配的值。
直接进入Main主体:
复制代码 代码如下:

public static void Main(string[] args){
string mess ="我们";
Console.WriteLine(HttpUtility.UrlEncode("我们"));
mess = GetGetRequest("http://translate.google.com/translate_t?langpair="+HttpUtility.UrlEncode("zh-CN|en")+ "&text="+HttpUtility.UrlEncode(mess,System.Text.UnicodeEncoding.GetEncoding( "Gb2312")),"utf-8");
//Console.WriteLine(mess);
mess = GetMatchString(mess,@"(<div id=result_box dir=""ltr"">)([?:\s\S]*?)(</div>)",2);
Console.WriteLine(mess);
}

注意的是
HttpUtility.UrlEncode(mess,System.Text.UnicodeEncoding.GetEncoding( "Gb2312"))
这句,无法识别UrlEncode的字符编码,这里需要指明。
OK,然后csc了,编译一下,下载一下吧。