博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
在Application中集成Microsoft Translator服务之使用http获取服务
阅读量:4868 次
发布时间:2019-06-11

本文共 4912 字,大约阅读时间需要 16 分钟。

一.创建项目

首先我们来创建一个ASP.NET Application

选择时尚时尚最时尚的MVC,为了使演示的Demo更简单,这里选择无身份验证

二.创建相关类

项目需要引入之前两个类AdmAccessToken和AdmAuthentication以便获取访问令牌,并添加一个名为Translator的控制器方便处理相关的业务

注意需要添加程序集System.Runtime.Serialization

添加一个Language_Codes

public class Language_Codes    {        public int Id { get; set; }        public string code { get; set; }        public string Name { get; set; }    }

三.创建数据库上下文类

首先我们需要引入Entity Framework框架,这里使用的是Nuget包管理

添加类CodeEntity,并且让它继承DbContext

public CodeEntity()            : base("DefaultConnection")        {        }        public DbSet
Language_Code{
get;set;} }

接下来修改webconfig

在 TranslatorController中添加

CodeEntity dbcontext = new CodeEntity();

这要我们可以获取语言对应的代码了

四.搭建界面

1.修改Index方法

public ActionResult Index()        {            List
list= dbcontext.Language_Code.ToList(); return View(list); }

 

给TranslatorController的Index添加视图

@model IEnumerable
@{ ViewBag.Title = "Index";}
翻译成
在layout.cshtml中添加
1   
效果如下

 

五.利用AJAX动态加载数据

1.加载LanguageCode

首先在控制器中添加一个LoadLanguageCode来处理加载语言代码请求

public ActionResult LoadLanguageCode(int id)        {            List
list = dbcontext.Language_Code.Where(c=>c.Id!=id).ToList(); return Json(list); }

 

在Scripts文件夹添加一个translator.js文件,并在视图中添加此文件的引用 给第一个select注册一个事件,每次select中选项更改时我们去加载第二个select的选项 document.getElementById("from").οnchange=function()     {
        var selectedid = $(":selected","#from").attr("id");         $.ajax(             {
                url: "../Translator/LoadLanguageCode",                 type: "post",                 data: { id: selectedid },                 success: function (_JsonData)                 {
                    $('#to').empty();                     for (var i = 0; i < _JsonData.length; i++) {
                        $('#to').append($('
' + _JsonData[i].Name + ''));                     }                 }             })     } 2.向microsoft请求服务 在TranslatorController添加 Translate方法
[HttpPost]        public ActionResult Translate(string from,string to,string text)        {            AdmAuthentication adm = new AdmAuthentication("zuin", "Ursm3pji3Fcha+70plJFrAbHT/Y00F7vyKdXlWLusmc=");            //string text = textBox1.Text;            //string from = "zh-CHS";//"zh-CHS"            //string to = "en";            string uri = "http://api.microsofttranslator.com/v2/Http.svc/Translate?text=" + System.Web.HttpUtility.UrlEncode(text) + "&from=" + from + "&to=" + to;            string authToken = "Bearer" + " " + adm.token.access_token;            HttpWebRequest httpWebRequest = (HttpWebRequest)WebRequest.Create(uri);            httpWebRequest.Headers.Add("Authorization", authToken);            WebResponse response = null;            try            {                response = httpWebRequest.GetResponse();                using (Stream stream = response.GetResponseStream())                {                    System.Runtime.Serialization.DataContractSerializer dcs = new System.Runtime.Serialization.DataContractSerializer(Type.GetType("System.String"));                    string translation = (string)dcs.ReadObject(stream);                    return Json(translation);                }            }            catch            {                string code = "fail";                return Json(code);            }        } 给“翻译”按钮注册事件
$('#submit').click( function ()    {        var formvalue =$("#from").val();             var tovalue = $("#to").val();        var textvalue = $("#text").val();        $.ajax(            {                url: "../Translator/Translate",                type: "post",                data: {from: formvalue, to: tovalue, text:textvalue },                success: function (_JsonData) {                    $('#transtext').empty();                    if (_JsonData=='fail') {                        alert("失败!,请联系管理员或使用微软必应在线翻译");                    }                    else {                        document.getElementById("transtext").innerHTML = _JsonData;                                         }                }            })    }    )
 

好了 现在可以使用服务了

由于业务很复杂,即使网络很好延迟还是很严重,需要优化下

 

 

 

转载于:https://www.cnblogs.com/zuin/p/5929106.html

你可能感兴趣的文章
内存分析工具 MAT 的使用 (转载)
查看>>
linux 软件安装各种方法
查看>>
傅里叶分析中几个容易混淆的概念
查看>>
log4j
查看>>
wpf使用进度条,趣味学习
查看>>
mfc对话框启动就直接隐藏在右下角显示托盘图标
查看>>
POJ 1151 Atlantis(离散化+暴力)
查看>>
Office 365 SharePoint Online 学习链接
查看>>
linux 只查看目录下文件夹
查看>>
shell 示例1 从1叠加到100
查看>>
IE慢吗?
查看>>
python库函数Map, Filter and Reduce的用法
查看>>
猖獗的假新闻:2017年1月1日起iOS的APP必须使用HTTPS
查看>>
MongoDB实战性能优化
查看>>
ADO.NET Entity Framework 4.1 中的代码优先
查看>>
用 Gearman 分发 PHP 应用程序的工作负载
查看>>
CENTOS 6 通过YUM升级GCC到4.7/4.8
查看>>
easyui-tree绑定数据的几种方式
查看>>
【Android】Fresco 初次使用遇到的坑
查看>>
接口自动化第二阶段代码
查看>>