- Asp.NET调用有道翻译API
-
调用有道API进行翻译,如图:
HTML:
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687<%@ Page Language="C#" AutoEventWireup="true" CodeFile="FanYi.aspx.cs" Inherits="FanYi" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<
head
runat
=
"server"
>
<
title
>翻译</
title
>
<
style
type
=
"text/css"
>
#sourceWord
{
height: 30px;
font-size: 16pt;
font-weight: bold;
border: 1px green solid;
line-height: 30px;
}
#Translate
{
font-size: 14pt;
margin-left: 10px;
}
#panel_Dict
{
margin-top: 15px;
}
.query
{
font-size: 16pt;
color: Green;
font-weight: bold;
}
.phonetic
{
color: Gray;
font-size: 13pt;
}
.wordGroup
{
font-size: 13pt;
color: #35a1d4;
font-weight: bold;
margin-right: 0.5em;
margin-top: 10px;
margin-bottom: 0px;
display: block;
}
legend
{
font-size: 12pt;
color: Gray;
}
fieldset
{
display: inline;
padding: 10px;
}
</
style
>
</
head
>
<
body
>
<
form
id
=
"form1"
runat
=
"server"
>
<
div
>
<
asp:TextBox
ID
=
"sourceWord"
runat
=
"server"
Style
=
"width: 500px;"
TextMode
=
"SingleLine"
MaxLength
=
"200"
></
asp:TextBox
>
<
asp:Button
ID
=
"Translate"
runat
=
"server"
Text
=
"Translate"
OnClick
=
"Translate_Click"
/>
<
asp:Panel
ID
=
"panel_Dict"
runat
=
"server"
>
<
asp:Label
ID
=
"lblQuery"
runat
=
"server"
Text
=
""
CssClass
=
"query"
></
asp:Label
>
<
asp:Label
ID
=
"lblPhonetic"
runat
=
"server"
Text
=
""
CssClass
=
"phonetic"
></
asp:Label
>
<
br
/>
<
fieldset
runat
=
"server"
id
=
"fieldset1"
>
<
legend
>近义词</
legend
>
<
asp:Label
ID
=
"lblExplains"
runat
=
"server"
Text
=
""
CssClass
=
"wordGroup"
></
asp:Label
>
</
fieldset
>
<
br
/>
<
fieldset
runat
=
"server"
id
=
"fieldset2"
>
<
legend
>翻译</
legend
>
<
asp:Label
ID
=
"lblTranslation"
runat
=
"server"
Text
=
""
></
asp:Label
>
</
fieldset
>
<
br
/>
<
fieldset
runat
=
"server"
id
=
"fieldset3"
>
<
legend
>短语</
legend
>
<
asp:Label
ID
=
"lblWeb"
runat
=
"server"
Text
=
""
></
asp:Label
>
</
fieldset
>
<
br
/>
</
asp:Panel
>
</
div
>
</
form
>
</
body
>
</
html
>
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147using
System;
using
System.Collections.Generic;
using
System.Net;
using
System.Runtime.Serialization;
using
System.Runtime.Serialization.Json;
using
System.Web;
public
partial
class
FanYi : System.Web.UI.Page
{
protected
void
Page_Load(
object
sender, EventArgs e)
{
translation();
}
/// <summary>
/// 翻译并显示结果
/// </summary>
private
void
translation()
{
lblTranslation.Text =
""
;
lblWeb.Text =
""
;
lblQuery.Text = sourceWord.Text;
lblPhonetic.Text =
""
;
lblExplains.Text =
""
;
if
(sourceWord.Text.Trim() ==
""
)
{
return
;
}
translationData data = YouDaoTranslateTool(sourceWord.Text.Trim());
if
(data.errorCode == 0)
{
if
(data.basic !=
null
)
{
fieldset1.Visible =
true
;
if
(data.basic.phonetic !=
""
)
{
lblPhonetic.Text =
"["
+ data.basic.phonetic +
"]"
;
}
for
(
int
i = 0; i < data.basic.explains.Count; i++)
{
lblExplains.Text += data.basic.explains[i] +
"<br/>"
;
}
}
else
{
fieldset1.Visible =
false
;
}
for
(
int
i = 0; i < data.translation.Count; i++)
{
lblTranslation.Text += data.translation[i] +
"<br/>"
;
}
if
(data.web !=
null
)
{
fieldset3.Visible =
true
;
for
(
int
i = 0; i < data.web.Count; i++)
{
lblWeb.Text +=
"<span class='wordGroup'>"
+ data.web[i].key +
"</span>"
;
for
(
int
j = 0; j < data.web[i].value.Count; j++)
{
lblWeb.Text += data.web[i].value[j] + (j == data.web[i].value.Count - 1 ?
""
:
"; "
);
}
lblWeb.Text +=
"<br/>"
;
}
}
else
{
fieldset3.Visible =
false
;
}
}
}
protected
void
Translate_Click(
object
sender, EventArgs e)
{
}
/// <summary>
/// 请求Web数据,返回实体类
/// </summary>
/// <param name="sourceWord">要翻译的内容</param>
/// <returns></returns>
public
translationData YouDaoTranslateTool(
string
sourceWord)
{
/*
调用:<A href="http://fanyi.youdao.com/openapi.do?keyfrom=?&key=?&type=data&doctype=json&version=1.1&q">http://fanyi.youdao.com/openapi.do?keyfrom=?&key=?&type=data&doctype=json&version=1.1&q</A>=中国人
*/
string
serverUrl =
@"http://fanyi.youdao.com/openapi.do?keyfrom=morninglight&key=1612199890&type=data&doctype=json&version=1.1&q="
+ HttpUtility.UrlEncode(sourceWord);
WebRequest request = WebRequest.Create(serverUrl);
WebResponse response = request.GetResponse();
DataContractJsonSerializer serializer =
new
DataContractJsonSerializer(
typeof
(translationData));
return
(translationData)serializer.ReadObject(response.GetResponseStream());
}
#region 翻译结果数据实体类
/*
json数据格式举例
{
"errorCode":0
"query":"翻译",
"translation":["translation"], // 有道翻译
"basic":{ // 有道词典-基本词典
"phonetic":"fān yì",
"explains":[
"translate",
"interpret"
]
},
"web":[ // 有道词典-网络释义
{
"key":"翻译",
"value":["translator","translation","translate","Interpreter"]
},
{...}
]
}
*/
[DataContract]
public
class
translationData
{
[DataMember]
public
int
errorCode {
get
;
set
; }
[DataMember]
public
string
query {
get
;
set
; }
[DataMember]
public
List<
string
> translation {
get
;
set
; }
[DataMember]
public
translationBasic basic {
get
;
set
; }
[DataMember]
public
List<translationWeb> web {
get
;
set
; }
}
[DataContract]
public
class
translationBasic
{
[DataMember]
public
string
phonetic {
get
;
set
; }
[DataMember]
public
List<
string
> explains {
get
;
set
; }
}
[DataContract]
public
class
translationWeb
{
[DataMember]
public
List<
string
> value {
get
;
set
; }
[DataMember]
public
string
key {
get
;
set
; }
}
#endregion
}