BO API是一款免费的数据服务API(http://www.boapi.net/),其单词查询接口http://service.boapi.net/EnWord/EnWord.ashx?key=AppKey&type=w&word=good,其中AppKey是申请的key,word是查询的单词。详细文档查看http://www.boapi.net/enword.htm。
开发语言:C#(wpf)
工具:VS2012
关键代码
1 private void btnSearch_Click(object sender, RoutedEventArgs e) 2 { 3 string word = tbKey.Text.Trim(); 4 if (word == "") 5 return; 6 try 7 { 8 WebClient wc = new WebClient(); 9 wc.Encoding = System.Text.Encoding.UTF8; 10 string json = wc.DownloadString("http://service.boapi.net/EnWord/EnWord.ashx?appkey=298fc40c3be17b1b94e2f&word=" + word); 11 wc.Dispose(); 12 if (!string.IsNullOrEmpty(json)) 13 { 14 JToken jk = (JToken)JsonConvert.DeserializeObject(json); 15 if (jk != null) 16 { 17 tbWord.Text = word; 18 tbPhonetic.Text = "[" + jk["mark"].ToString() + "]"; 19 tbTrans.Text = jk["explain"].ToString(); 20 voice.Visibility = Visibility.Visible; 21 voice.Tag = "http://www.boapi.net/basicdata/voice/" + word.Substring(0, 1) + "/" + jk["voice"].ToString(); 22 if (jk["es"] != null) 23 { 24 if (jk["es"].Count() > 0) 25 tbSentence.Text = jk["es"][0]["sentence"].ToString() + " " + jk["es"][0]["translate"].ToString(); 26 if (jk["es"].Count() > 1) 27 tbSentence.Text += Environment.NewLine + jk["es"][1]["sentence"].ToString() + " " + jk["es"][1]["translate"].ToString(); 28 //if (jk["es"].Count() > 2) 29 // tbSentence.Text += Environment.NewLine + jk["es"][2]["sentence"].ToString() + " " + jk["es"][2]["translate"].ToString(); 30 } 31 } 32 } 33 } 34 catch 35 { } 36 }
代码解析:
WebClient提供资源接收数据公共方法,我们就可以从远程url地址下载数据(访问服务)。
JsonConvert.DeserializeObject将string反序列化为json对象
voice是一个播放图标,这里将单词的音频文件地址存储到voice的Tag属性中
注意:
单词查询返回的json中,Voice代表单词语音文件名。访问语音文件的url为:http://www.boapi.net/basicdata/voice/单词文件名
如:查询good单词返回的json中"voice":"good.wav",则good单词的url为http://www.boapi.net/basicdata/voice/good.wav
源码下载:单词查询软件源码