1.打开VS2013新建C#窗口应用程序,在窗体上拉出一个label两个textbox和一个button
将上面的textbox的属性name改为txtWord,将下面的testbox的属性name改为txtResult
2.我们创建一个类,来存放反序列化后的翻译结果,类目就叫TransObj,代码如下:
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace BaiduTrans { public class TransObj { public string from { get; set; } public string to { get; set; } public List<TransResult> trans_result { get; set; } } public class TransResult { public string src { get; set; } public string dst { get; set; } } }Json的反序列化,我们使用Newtonsoft.Json。用NuGet安装Newtonsoft.json
打开vs2013的工具 - NuGet程序包管理器 - 程序包管理器控制台,这时在VS的底部窗口出现命令行:pm>
输入命令行:
pm> install-package newtonsoft.json回车,过一会,提示newtonsoft.json已经安装成功。
3.双击翻译按钮,添加代码如下:
<span style="color:#444444;">using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Windows; using System.Windows.Input; using Newtonsoft.Json; using System.Net; using System.IO; using System.Windows.Forms; namespace BaiduApi { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { WebClient client = new WebClient(); string txtInput = txtWord.Text; txtInput = txtInput.Replace(@"#", "%23"); string url = string.Format("http://openapi.baidu.com/public/2.0/bmt/translate?client_id=</span><span style="color:#ff6666;">YourApiKey</span><span style="color:#444444;">&q={0}&from=auto&to=auto", txtInput); var buffer = client.DownloadData(url); string result = Encoding.UTF8.GetString(buffer); StringReader sr = new StringReader(result); JsonTextReader jsonReader = new JsonTextReader(sr); JsonSerializer serializer = new JsonSerializer(); var r = serializer.Deserialize<TransObj>(jsonReader); txtResult.Text = r.trans_result[0].dst; } } } </span>红色字体须修改成自己的Api key,否则无法运行
这是百度翻译的API文档http://developer.baidu.com/wiki/index.php?title=帮助文档首页/百度翻译/翻译API
Api key获取 须先注册百度开放服务平台,点击开发者服务管理,创建工程,即可形成APikey,如图
至此,大家可以把小程序跑起来了
本文章参考了云菲菲博客http://www.cnblogs.com/yunfeifei/p/4158571.html
左直拳的博客http://blog.csdn.net/leftfist/article/details/38687745