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. HDU - 6054String and String

    题意:给串s和t,对于串s每个位置有一个价值f,两种操作1.修改f[a]=b,2.查询串t子串Ta-b在s的子串Sc-d中出现位置的f和 题解:s和t建sam,把fail树按dfs序建bit套线段树, ...

  2. 手机上 input submit ios和andirod样式不统一

    -webkit-appearance:none;

  3. .net mvc 上传头像

    我用的是mvc5  开发环境vs2017 [仅供参考] [视图代码] <div > <img src="@path" alt="@att.Count&q ...

  4. Spring教程笔记(3) Bean

    Bean配置项 id class必须项 如果根据id来获取bean,要写id:如果根据类型来配置bean,只写class就可以. scope作用域 constructor arguments prop ...

  5. Nmap UDP扫描缓慢问题探究(无结果)

    一.说明 在网络原理中我们经常说TCP是面向连接的要进行三次握手和四次挥手所以速度比较慢,UDP是无连接的直接发送和接收所以速度快(说到这个快慢我总想起多年前有篇分析MSN为什么被QQ淘汰的一篇文章其 ...

  6. 运用jieba库 寻找高频词

    一.准备 1.首先 先用cmd 安装 jieba库,输入 pip install jieba 2.其次 本次要用到wordcloud库和 matplotlib库,也在cmd输入pip install ...

  7. As The End of The Year Approaches,The Weighted Blanket Season Begins

    Weight blankets are well known for anxiety, insomnia, depression and so on. It is physical therapy, ...

  8. unity解压缩zip发布后的一些问题

    前段时间项目需要,搞了下zip的解压缩问题,也是利用ICSharpCode.SharpZipLib.dll来处理的zip,这里说下之前遇到的坑(这里提供我用的这个库ICSharpCode.SharpZ ...

  9. 在win中,给powershell客户端,搭建sshd服务器。

    下载:https://github.com/PowerShell/Win32-OpenSSH/releases     问:为什么要用这个sshd?答:这是微软用,openssh官方的源码,源码网址: ...

  10. 转载-Python单元测试框架——unittest

    一.Pyhon工作原理—— 核心概念:test case, testsuite, TestLoder,TextTestRunner,TextTestResult, test fixture TestC ...