在Application中集成Microsoft Translator服务之使用http获取服务
一.创建项目
首先我们来创建一个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_Codes> Language_Code{get;set;}}
接下来修改webconfig
<connectionStrings><add name="DefaultConnection" connectionString="server=.;database=LanguageCode;uid=sa;pwd="providerName="System.Data.SqlClient" /></connectionStrings>
在 TranslatorController中添加
CodeEntity dbcontext = new CodeEntity();
这要我们可以获取语言对应的代码了
四.搭建界面
1.修改Index方法
public ActionResult Index(){List<Language_Codes> list= dbcontext.Language_Code.ToList();return View(list);}
给TranslatorController的Index添加视图
@model IEnumerable<Translator.Models.Language_Codes> @{ViewBag.Title = "Index"; } <table class ="table table-striped"><tr><td><label>要翻译的文本</label><textarea id="text" class="form-control" rows="5"></textarea></td><td>将<select id="from" class="form-control"><option value="1">请选择</option>@foreach (var item in Model){<option id="@item.Id" value="@item.code">@item.Name</option>}</select>翻译成<select id="to" class="form-control"><option value="1">请选择</option></select><button id="submit" class="btn btn-default">翻译</button></td><td><label>翻译的文本</label><textarea id="transtext" class="form-control" rows="5"></textarea></td></tr></table>在layout.cshtml中添加
1 <div class="navbar-collapse collapse"> 2 <ul class="nav navbar-nav"> 3 <li>@Html.ActionLink("主页", "Index", "Home")</li> 4 <li>@Html.ActionLink("关于", "About", "Home")</li> 5 <li>@Html.ActionLink("联系方式", "Contact", "Home")</li> 6 <li>@Html.ActionLink("翻译", "Index", "Translator")</li> 7 </ul> 8 </div> 效果如下
五.利用AJAX动态加载数据
1.加载LanguageCode
首先在控制器中添加一个LoadLanguageCode来处理加载语言代码请求
public ActionResult LoadLanguageCode(int id){List<Language_Codes> list = dbcontext.Language_Code.Where(c=>c.Id!=id).ToList();return Json(list);}
在Scripts文件夹添加一个translator.js文件,并在视图中添加此文件的引用<script src="~/Scripts/translator.js"></script>给第一个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($('<option' + ' id=' + _JsonData[i].Id + ' value=' + _JsonData[i].code + '>' + _JsonData[i].Name + '</option>')); } } }) }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
在Application中集成Microsoft Translator服务之使用http获取服务相关推荐
- Installshield中集成Microsoft Visual C++ 2010 Redistributable
Installshield中集成Microsoft Visual C++ 2010 Redistributable (2014-02-28 15:14:33) 转载▼ 标签: microsoftvis ...
- 跨平台应用集成(在ASP.NET Core MVC 应用程序中集成 Microsoft Graph)
1 谈一谈.NET 的跨平台 终于要写到这一篇了.跨平台的支持可以说是 Office 365 平台在设计伊始就考虑的目标.我在前面的文章已经提到过了,Microsoft Graph 服务针对一些主流的 ...
- 【云原生】Apisix接入Nacos、K8s服务注册中心自动获取服务
背景 我在K8s中部署了两个使用SpringCLoudK8s框架的微服务,每个服务既暴露了HTTP接口方便测试,也暴露了gRpc接口更接近生产,他们的端口如下所示: 常规功能 上游 我们可以在这里配置 ...
- 在laravel5.8中集成swoole组件----用协程实现的服务端和客户端(二)---静态文件如何部署...
目前,较为成熟的技术是采用laravelS组件,注意和laravel 区别laravelS多了一个大写的S,由于laravelS默认监听5200端口,所以laravel项目要做一些调整 例如: 静态文 ...
- 在laravel5.8中集成swoole组件----用协程实现的服务端和客户端(一)
注意,这种风格的服务端需要swoole4.4以上,这种风格的服务端需要swoole4.4以上,这种风格的服务端需要swoole4.4以上,重要的事情说三遍!!! 服务端 <?php //name ...
- 在laravel5.8中集成swoole组件----用协程实现的服务端和客户端(nginx配置篇章)
laravel项目中的配置 原文出处:https://laravelacademy.org/post/19700.html,感谢原文作者让laravel这款可爱的php框架,进入了高并发的殿堂 如果 ...
- 开启 QQ 邮箱 POP3, SMTP 服务和获取服务授权码(密码)
QQ 邮箱各种服务详细信息 服务类型 服务器地址 端口一 端口二 POP3 pop.qq.com 995 无 SMTP smtp.qq.com 465 587 然而仅仅有以上信息还不够,需要获取服务授 ...
- Binder—获取服务
Binder-获取服务 获取服务 一.BC_TRANSACTION binder_ioctl 二.BR_TRANSACTION 三.BC_REPLY 四.BR_REPLY 五.Client 收到服务句 ...
- 开启微软 Outlook 邮箱 POP, IMAP, SMTP 服务和获取服务密码(授权码)
微软 Outlook 邮箱各种服务详细信息 服务类型 服务器地址 端口 加密方法 POP outlook.office365.com 995 TLS IMAP outlook.office365.co ...
- 【转】在无人值守程序(服务)中调用Microsoft Graph
什么是无人值守程序(服务) 我在此前用了几篇文章分别介绍了在桌面应用程序(控制台),Web应用程序(ASP.NET MVC),以及PowerSehll脚本中如何访问Microsoft Graph,今天 ...
最新文章
- 【js基础】理清Object、Object.prototype、Function、Function.prototype
- 从职责归属看数据库中关系设计
- MybatisPlus代码生成器配置
- window git安装 以及 tortoiseGit安装与使用
- Delphi WebService 的编写、调试、发布(IIS)、调用
- 子弹短信 android,子弹短信精简版
- Python面试题解答——第一部分
- windows 哪些服务必须打开
- 量化中需留意的坑之二
- this.fields.get(c) is undefined
- 做一个管理者的学习之路--002
- node环境配置安装(nvm)
- 我为什么关注范冰冰和苍井空
- ASP.Net MVC开发基础学习笔记(9):查看详情、编辑数据、删除数据
- 新手入门|计算机科普
- Window 10 电源高性能模式设置
- 本地项目的一个git仓库损坏如何恢复
- NDK学习笔记:FFmpeg解压MP34提取音频PCM(swrContext、swr_alloc_set_opts)
- 2020-08-21
- android 图片占用内存的计算
热门文章
- WCF学习 (三)深入认识WCF契约
- SSM(Spring+springMVC+MyBatis)框架-springMVC实现图片上传
- 用CSS制作细线表格
- 技术升级成为Linux运维人前途的魔障,是跟进还是选择被淘汰?
- 【通关计划】进入IT培训魔域这个红海,ITbegin为何选择从高校编程教
- c#_delegate_异步调用_BeginInvoke
- SQL Server 2012 中 SSAS 多维数据浏览器已经废除
- ASIHttpRequest startAsynchronous
- c++switch实现猜拳_Animate/FLASH如何制作猜拳小游戏(AS3)
- [JNI]开发之旅(7)JNI函数中调用java对象的方法