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