3月的下午,在C#群里日常装逼(聊天), 一兄弟说百度翻译有没有winfrom上用的Demo,问了一天  嫌烦了  我就干脆自己写个; PS 百度上的部分代码害死人啊  api地址都换的不成样了, 还那么多旧地址……………………

给大家看下小程序的界面 (纯功能而已)

具体思路很简单了  就是调用百度给的url 传几个参数就行(这里用到C#的WebClient) 然后百度回传的是Json格式

实施步骤:

1  百度开发者中心 申请账号  自己去吧!

2 需要一个json.net来处理百度返回的json数据 做法是

在项目的“引用”上右击 选择“管理NuGet程序包”

然后在弹出窗口 中 选择 “联机”  在搜索窗口键入 “json”  搜索完成  安装即可

下面   上代码!

先放上 api的地址:http://api.fanyi.baidu.com/api/trans/product/apidoc

这里  我挑选几个重要参数说下

字段名 类型 必填参数 描述 备注
q TEXT Y 请求翻译query

UTF-8编码 需要url encode

from TEXT Y 翻译源语言 可设置为auto
to TEXT Y 译文语言 百度api上说不可设置成auto 但我测试是可以的 估摸着检测客户端语言了
appid INT Y APPID 可在管理控制台查看
salt INT Y 随机数  我用的是Random
sign TEXT Y 签名

appid+q+salt+密钥字符串的MD5加密值

再看下 请求的URL :http://api.fanyi.baidu.com/api/trans/vip/translate?q=apple&from=auto&to=auto&appid=123&salt=111&sign=MD5123hsjsj

这个url只为说明格式 数据不正确的

那  上代码?好嘞! 注意  我把appid,key,salt 都写成了全局变量 所以在放代码上 不是很方便  截图吧

/// <summary>
/// 翻译的按钮
/// </summary> private void button2_Click(object sender, EventArgs e)
{
string s = BaiduTans_Get("auto", "auto");
var obj = JObject.Parse(s); //使用了一个json.net 需要引用 注意前面的using
try
{
string res = obj["trans_result"].Last["dst"].ToString();
textBox2.Text = res;
}
catch (Exception ex)
{
MessageBox.Show("出现错误 可能是接口不稳定导致!");
} }
/// <summary>
/// 翻译方法主体
/// </summary>
/// <param name="from">从什么样的语言</param>
/// <param name="to">翻译成什么样的</param>
/// <returns></returns> private string BaiduTans_Get(string from, string to)
{
Random rd = new Random();
salt = rd.Next(, );//s随机数 搞长一点 string url = string.Format("http://api.fanyi.baidu.com/api/trans/vip/translate?q={0}&from={1}&to={2}&appid={3}&salt={4}&sign={5}", textBox1.Text.Trim(), from, to, appid, salt, getSign());
WebClient wc = new WebClient(); //模拟请求
return wc.DownloadString(url);//直接down下来返回的字符串 然后处理 }
/// <summary>
/// 获取签名(OAuth协议规则) ,appid + 翻译词 + salt + key
/// </summary>
/// <returns>返回签名的值</returns>
private string getSign()
{
string sign = "";
string t1 = textBox1.Text.Trim();
string oldsign = HttpUtility.UrlEncode(appid + t1 + salt + key, System.Text.Encoding.UTF8);
sign = GetMD5(oldsign);
return sign;
}
/// <summary>
/// 加密成32位小写的MD5
/// </summary>
/// <param name="myString">传入需要加密的字符串</param>
/// <returns>返回加密后的字符串</returns>
public static string GetMD5(string myString)
{
string res = "";
MD5 md5 = MD5.Create();//实例化一个md5对像
// 加密后是一个字节类型的数组,这里要注意编码UTF8/Unicode等的选择 
byte[] s = md5.ComputeHash(Encoding.UTF8.GetBytes(myString));
// 通过使用循环,将字节类型的数组转换为字符串,此字符串是常规字符格式化所得
for (int i = ; i < s.Length; i++)
{
// 将得到的字符串使用32进制类型格式。格式后的字符是小写的字母,如果使用大写(X)则格式后的字符是大写字符
res = res + s[i].ToString("x");
}
return res;
}

展开查看具体代码

这里  有几个注意的地方

我不知道是我写法问题还是百度的问题 会经常报sign签名错误, 多试几次即可……

另外 返回的json格式为

{
  "from": "en",
  "to": "zh",
  "trans_result": [
    {
      "src": "sun",
      "dst": "太阳"
    }
  ]
}

在使用json.net 处理返回数据时 就没有那么详细说明了!

另外: 这个是winfrom里面实现了  稍微变通下即可在asp.net(web,mvc)中实现 道理都挺简单

我是老花 goodbye!

百度翻译新API C#版在 winform,Asp.Net的小程序的更多相关文章

  1. 【攻略】百度货币识别API,搞定防诈骗的应用小程序

    1.需求及方案: 近两年用外币进行诈骗的案件很多.例如:2015年12月,一安徽诈骗团伙,用不值1角人民币的50印蒂(intis,秘鲁旧货币,1991年发行新货币后已停止流通,目前无货币价值,仅有&q ...

  2. NIPS 2018 | 程序翻译新突破:UC伯克利提出树到树的程序翻译神经网络

    NIPS 2018 | 程序翻译新突破:UC伯克利提出树到树的程序翻译神经网络 机器之心 ​ 已认证的官方帐号 49 人赞同了该文章 选自arXiv,作者:Xinyun Chen.Chang Liu. ...

  3. C#开发微信门户及应用(47) - 整合Web API、微信后台管理及前端微信小程序的应用方案

    在微信开发中,我一直强调需要建立一个比较统一的Web API接口体系,以便实现数据的集中化,这样我们在常规的Web业务系统,Winform业务系统.微信应用.微信小程序.APP等方面,都可以直接调用基 ...

  4. 百度翻译&&金山词霸API

    #/usr/bin/env python3 #coding=utf8 """百度翻译api功能实现函数,本模块基于Python3.x实现,getTransResult(q ...

  5. 百度地图 JavaScript API 极速版 开发体会

    前段时间百度地图API推出了 JavaScript API 极速版 1.0 简单看了一下,从产品定位来说真是挺好. 把开发人员细分成普通web开发人员和移动web开发人员.正好用到了手机地图这块决定尝 ...

  6. 利用百度AI快速开发出一款“问答机器人”并接入小程序

    先看实现效果: 利用百度UNIT预置的智能问答技能和微信小程序,实现语音问答机器人.这里主要介绍小程序功能开发实现过程,分享主要功能实现的子程序模块,都是干货! 想了解UNIT预置技能调用,请参看我之 ...

  7. mac版微信web开发者工具(小程序开发工具)无法显示二维码 解决方案

    微信小程序概念的提出,绝对可以算得上中国IT界惊天动地的一件大事,这可能意味着一场新的开发热潮即将到来, 我也怀着激动的心情准备全身心投入其中,不过截止目前,在官方网站上下载的最新版本都无法使用,打开 ...

  8. 【转】mac版微信web开发者工具(小程序开发工具)无法显示二维码 解决方案

    转自:https://www.cnblogs.com/stevenluo/p/6030445.html   微信小程序概念的提出,绝对可以算得上中国IT界惊天动地的一件大事,这可能意味着一场新的开发热 ...

  9. 使用百度翻译的API接口

    http://api.fanyi.baidu.com/api/trans/product/desktop 这是申请的接口地址,会得到一个APPID和一个钥密 然后下载PHP的对应的代码 有一个PHP文 ...

随机推荐

  1. ECharts前端图形展示

    这次负责慢查询预警,前后端都是自己处理,这次遇到了前端作图的需求,做一个记录以便后续使用: 使用的作图方式是ECharts,相应的example官方有相应的文档和使用方法,比较简单,一下只贴链接: h ...

  2. windows WebStorm常用快捷键记录,常用的都在这儿找扒

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Webstorm version 2018.2  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1. Ctrl + Shift + ...

  3. reactjs-swiper react轮播图组件基于swiper

    react轮播图组件基于swiper demo地址:http://reactjs-ui.github.io/reactjs-swiper/simple.html 1. 下载安装 npm install ...

  4. 注册测绘师20180301-CNSS

    GNSS:Global Navigation Satellite System(全球卫星导航系统)GPS:Global Positioning System(全球定位系统)GPS是美国的卫星导航系统. ...

  5. Java 开发笔记

    共同学习,以下内容,随时更新. 前端 1.前端页面&apos;是单引号的转义符,"是双引号.  问题(前端JS进行参数传递时,使用的是单引号扩住变量,但是变量形式为 2019-27  ...

  6. Linux内存管理(一)

    Linux内存管理之一:基本概念篇 物理地址.线性地址(虚拟地址)和逻辑地址:阐述段式管理和页式管理基本概念:Linux操作系统内存管理和虚拟内存概念:为内核开发做一个基础铺垫. 内存是linux内核 ...

  7. 大雄玩java虚拟机01--java命令

    首先是参考的资料,然后说一下我要干什么,我要一边学习java虚拟机一边跟着zxh0大神用go写一个jvm,不过我和他滴不一样! http://docs.oracle.com/javase/specs/ ...

  8. jenkins 忘记用户名和密码

    有时候会经常遇到这种情况,长时间不用会遗忘用户名和密码 admin初始密码未修改的情况 进入\Jenkins\secrets目录,打开initialAdminPassword文件,复制密码: 访问Je ...

  9. myBatis xml if、where、if-else?、foreach 心得

    MyBatis 的强大特性之一便是它的动态 SQL.如果你有使用 JDBC 或其它类似框架的经验,你就能体会到根据不同条件拼接 SQL 语句的痛苦.例如拼接时要确保不能忘记添加必要的空格,还要注意去掉 ...

  10. Ganlia采样、统计及RRD记录周期(频次、间隔)的配置和更改

    Ganglia & RRD Ganglia是伯克利开发的一个集群监控软件.可以监视和显示集群中的节点的各种状态信息,比如如:cpu .mem.硬盘利用率, I/O负载.网络流量情况等,同时可以 ...